c - scanf 如何知道何时结束 for 循环?

标签 c loops scanf

我有以下代码:

#include <stdio.h>

int main(int argc, char **argv) {
   int arr[2];
   arr[0] = 0;
   arr[1] = 0;
   int end = 0;
   int i;   
   for (i=0; i<2 ; i++){
      scanf(" num %d", &arr[i]);
   }

  scanf(" end %d", &end);
  printf("arr0 %d \n", arr[0]);
  printf("arr1 %d \n", arr[1]);
  printf("end  %d \n", end);

}

对于输入:

num 1
num 2
end 3

它工作得很好。 但它也适用于下一个输入:

num 1
end 2

它如何知道结束 for 循环并计算最后一个 scanf 的值?为什么没有失败?

最佳答案

scanf 在第二个示例中确实失败了。第二次循环迭代失败并返回 0 个读取项,而 arr[1] 保持不变。然后循环结束,最后一个 scanf 成功读取第二行输入。

关于c - scanf 如何知道何时结束 for 循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50064218/

相关文章:

ios - 有什么方法可以在没有循环的情况下检查指向指针的 bool** 指针是否包含 C 中的真值?

python - 我如何将我的想法转移到 'vectorize my computation' 而不是使用 'for-loops' ?

c - 根据条件将元素添加到两个数组

json - Ansible 按 json 属性分组

perl 'last' 语句和变量范围

c - Scanf() 与格式说明符中提供的\n 和 '\n' 的工作方式不同

C - if-else 语句卡住并崩溃

c - 在 getchar 之后使用 Scanf?

c++ - 传递 malloc 指针给我错误

c - 使用Visual Studio 2019制作基本代码时,为什么必须使用scanf_s而不是scanf