Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 导致奇怪行为的For循环中的fgets_C_Fgets - Fatal编程技术网

C 导致奇怪行为的For循环中的fgets

C 导致奇怪行为的For循环中的fgets,c,fgets,C,Fgets,我正在尝试使用fgets获取用户输入,一些奇怪(不正确)的事情正在发生,我似乎不明白为什么 程序运行时带有一个参数,该参数指示用户要输入多少值 以下是程序应该如何运行: ./a.out 6 Enter 6 integer values to place in tree: 5 4 3 2 1 6 Input values: 5 4 3 2 1 6 如果我有1作为参数,它甚至不允许我输入输入,那么0从哪里来 ./a.out 1 Enter 1 integer values to place i

我正在尝试使用fgets获取用户输入,一些奇怪(不正确)的事情正在发生,我似乎不明白为什么

程序运行时带有一个参数,该参数指示用户要输入多少值

以下是程序应该如何运行:

./a.out 6
Enter 6 integer values to place in tree:
5
4
3
2
1
6
Input values:
5
4  
3
2
1
6
如果我有1作为参数,它甚至不允许我输入输入,那么0从哪里来

./a.out 1
Enter 1 integer values to place in tree:
Input values:
0
如果我有2作为参数,它只允许我输入1个输入,幻象0再次出现

./a.out 2
Enter 2 integer values to place in tree:
1
Input values: 
1
0
如果我有3个或3个以上的参数,它的功能是正确的

以下是消息来源:

int main (int argc, const char* argv[]){
   int numIntegers;
   char buffer[20];
   if (argc == 1){
      printf("Usage: a.out #\n");
      return EXIT_FAILURE;
   }
   else{
      numIntegers = atoi(argv[1]);
      if (numIntegers <= 0){
         printf("# must be greater than 0\n");
         return EXIT_FAILURE; 
      }
      else{
         int intArray[numIntegers];
         printf("Enter %d integer values to place in tree: \n", numIntegers);
         for (int i = 0; i < numIntegers; i++){
            fgets(buffer, numIntegers, stdin);
            intArray[i] = atoi(buffer);
         }
         printf("Input values:\n");
         for (int i = 0; i < numIntegers; i++){
            printf(%d\n", intArray[i]);
         }
      }
   }
}//end main
int main(int argc,const char*argv[]{
国际货币基金组织;
字符缓冲区[20];
如果(argc==1){
printf(“用法:a.out\n”);
返回退出失败;
}
否则{
numIntegers=atoi(argv[1]);
如果(numitegers,
fgets()
的size参数指的是
缓冲区的大小,在您的例子中应该是20

fgets(buffer, sizeof(buffer), stdin);

顺便说一下,您的代码实际上不会编译

printf(%d\n", intArray[i]);    // missing a quotation mark

谢谢你,克里斯,这就解决了!总是小事。