如果 argc 仅采用一个参数,则会出现分段错误。当 IF 在 WHILE 之前时,这不会发生
Segmentation fault error if argc takes only one argument. This does'nt happen when the IF is before WHILE
检查用户是否提供任何命令行参数,或更多,它打印用法:./caesar key。如果命令行参数是一个,那么它会检查字符串中的所有字符是否都是数字。如果我在命令行中输入 ./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];
是空的,导致段错误。
检查用户是否提供任何命令行参数,或更多,它打印用法:./caesar key。如果命令行参数是一个,那么它会检查字符串中的所有字符是否都是数字。如果我在命令行中输入 ./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];
是空的,导致段错误。