问题描述
检查用户是否没有提供命令行参数,或者更多,它会打印 Usage: ./caesar key。如果命令行参数为 1,则它检查字符串中的所有字符是否都是数字。如果我在命令行中输入 ./caesar,则会出现分段错误错误。当 IF 在 WHILE 之前时不会发生这种情况。我不确定为什么会发生此错误。非常感谢您的帮助!
#include <stdio.h>
#include<stdlib.h>
#include<string.h>
#include<ctype.h>
#include<cs50.h>
int main(int argc,char*argv[])
{
string str = argv[1];
//check if argv[1] are all digits
while(argc == 2)
{
for(int i = 0; i< strlen(str); i++)
{
if(!isdigit(str[i]))
{
printf("Usage: ./caesar key \n");
break;
}
}
break;
}
// check if argument count is not 2
if(argc != 2)
{
printf("Usage: ./caesar key \n");
}
return 0;
}
解决方法
./casear
是 argv[0]
表示 string str = argv[1];
为空,导致段错误。