我刚刚开始学习C的课程,并在命令行参数中遇到问题。分配是这样的(还有更多,但是这是关于在开始的命令行参数的部分):
- 您的程序必须接受一个命令行参数,一个非负整数。
- 如果您的程序在没有任何命令行参数或多个命令行参数的情况下执行,您的程序应打印出您选择的错误消息并返回1.
- 您可以假设,如果用户确实提供了一个命令行参数,它将是一个非负整数(例如1)。不需要检查它确实是数字。命令行参数条件pset2凯撒
所以我想出了这个代码:
#include <stdio.h>
#include <cs50.h>
#include <string.h>
int main(int key, string plain[]) {
if (key < 0 || plain[key] > 1)
{
printf("error\n");
return 1;
}
else
等..代码继续。
现在我已经尝试了几件事情,但是我正在碰壁。编译器不想接受我提出的if条件,并说指针和整数之间有一个比较错误指的是作业列表中的粗体条件。所以我明白命令行参数的argv部分是用户输入的字符串数组。所以我的想法是告诉编译器,当用户给出多个字符串时,它应该给出错误消息,所以我写了“plain [key]> 1)”。或者,我对命令行参数的理解完全在这里?谢谢。
'plain [key]'将是'string'不是'int' –
'plain [key]'可能是越界的。你应该检查传递给'main'的参数。 – Gerhardh
C没有'string'类型。那是什么? 'main'的签名应该是'int main(int,int * [])',或者最后一个参数可以是'int **',它们是相同的。 – Olaf