注册 登录
编程论坛 C语言论坛

c语言的一个简单问题,

尘封绛颜 发布于 2020-01-11 16:47, 2223 次点击
#include "stdio.h"
int main (void)
{  int i,m;
    scanf("%d",&m);
    for(i=0;i<m;i++)
    {
    char a[1000];
    gets(a);
    puts(a);
    }
   
}
只有本站会员才能查看附件,请 登录

就是在运行的时候输入3
光标在下下行闪
然后就只能输入两句话
这是什么情况
求解
9 回复
#2
xianfajushi2020-01-11 16:57
   char a[1000];移动到循环外试看,为何要把变量声明放在循环内,虾米用意?
#3
尘封绛颜2020-01-11 17:02
回复 2楼 xianfajushi
重复输入输出3个句子

[此贴子已经被作者于2020-1-11 17:05编辑过]

#4
尘封绛颜2020-01-11 17:03
回复 2楼 xianfajushi
还是不行
#5
xianfajushi2020-01-11 17:12
原来是连续输入与连续输出,说清楚了啊。
这要能先存储3次输入后,最后连续输出的事,你这代码的逻辑就不对了。
#6
吕孟伟2020-01-11 17:34
程序代码:

#include <stdio.h>
int main (void) {
    int i,m;
    scanf("%d",&m);
    for(i=0; i<m; i++) {
        char str[1000];
        scanf("%s", str);
        printf("%s", str);
    }
    return 0;
}

为什么你的代码是"stdio.h",而不是<stdio.h>?
#7
forever742020-01-11 18:19
因为scanf执行以后在缓冲区剩下了换行字符,所以这个换行字符浪费了一次gets
在scanf后面,下方是非scanf系的字符或字符串输入函数时,例如getchar、getc、gets什么的
可使用while(getchar()!='\n'); 吃掉多余字符,免得干扰下方执行。
#8
forever742020-01-11 18:22
另外,能容忍gets函数的编译器越来越少了,与时俱进吧,不用它了吧。
#9
尘封绛颜2020-01-11 19:56
回复 8楼 forever74
好的谢谢
#10
xianfajushi2020-01-11 20:12
可参https://ask.
1