我写了这段代码,它接受一个整数 (t) 作为用户的输入。一个循环将只执行 't' 次。但我发现它运行了 (t-1) 次。例如,如果我输入 3 ,它只会运行 2 次。谁能解释一下为什么会这样?

我尝试并使用了 scanf("%s", &str) ,它可以工作,但是我不能将字符串作为包含空格的输入。

#include <stdio.h>
int main()
{
    int t;
    scanf("%d", &t);
    while(t--)
      {
        char str[100];
        gets(str);
        printf("%s\n", str);
      }
    return 0;
}

最佳答案

scanf("%d", &t) 仅使用输入流中的数字并保留其余字符。当您输入数字并按回车键时,数字后会有一个换行符。

第一个 gets 读取此换行符并返回一个除换行符外为空的字符串。循环的第一次迭代打印此空行。

关于c - 这个循环会被执行多少次?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21437760/

10-11 23:10
查看更多