【发布时间】:2021-12-22 01:54:02
【问题描述】:
您好,我想编写只接受一个 c 输入文件的代码。 例如,我想要输入文件的名称是 shortinput.txt ! 所以我将在 putty 上使用一个命令行参数,并且我还想让代码只得到一个参数。如果命令行参数的数量不是 1(零或大于 1),那么应该 在显示屏上打印使用字符串并退出程序。使用字符串如下所示: 用法:./hw2 input_filename
问题就在这里。在下面的代码中,我想打印错误不仅参数为空,而且不止一个!
int main(int argc, char* argv[]){
if(argv[1]==NULL||argv[2]||argv[3])//where i want to fix
{
printf("usage: ./hw2 input_filename");
}
FILE *fp =fopen(argv[1],"r");
if(fp==NULL){
printf("The input file does not exist.\n");
}
}
【问题讨论】:
-
这就是
argc的用途。它告诉你有多少个参数(包括可执行文件名)。 -
如果有 3 个参数,那么 argv[3] 不会为空。那么,有什么问题呢?
-
您正在尝试访问
argv[1]、argv[2]和argv[3],如果参数较少,这可能会导致您出现分段错误。先检查argc的值,然后才访问。