如果 argc 只接受一个参数,则出现分段错误。当 IF 在 WHILE

时间:2021-07-24 03:56:31

标签: c if-statement while-loop argv argc

检查用户是否没有提供命令行参数,或者更多,它会打印 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;

   }

1 个答案:

答案 0 :(得分:0)

./casearargv[0] 表示 string str = argv[1]; 为空,导致段错误。