关于gets()

来源:百度知道 编辑:UC知道 时间:2024/05/27 11:24:34
int main()
{
int num, i;
char str[610], *p = str;

while(scanf("%d", &num) != EOF)
{
for(i = 0; i < num; i++)
{
gets(p);

puts(p);
}
}
return 0;
}

本意:输入num,为下面要输入num组数据,每输入一行字符串(中间可能有空格),就把它打印出来。
运行出错。

在 输入 num 后有一个回车,gets 只认回车的,所以要在 输入num后清空缓冲区 这样吧:
int main()
{
int num, i;
char str[610], *p = str;

while(scanf("%d", &num) != EOF)
{
fflush(stdin);
for(i = 0; i < num; i++)
{
gets(p);

puts(p);
}
}
return 0;
}

#include<stdio.h>

int main()
{
int num, i;
char str[610];

while(scanf("%d", &num)) // 循环条件改下,只要输入非法字符结束
{
getchar(); /* 接受输入num后的换行符 */
for(i=0;i<num;i++)
{
gets(str);
puts(str);
}
}

return 0;
}

LZ可以 百度一下 键盘盘缓冲区的问题,关键字可以用 getchar getch

还有scanf函数不处理最后输入的换行符,%c除外,好好研究一下
gets函数接受最后输入的换行符,并将换行符转化为'\0',可以试一下

我没记错的话应该是gets(&p)???
另外,我觉你的loop有点奇怪?

什么错误?
把错误贴出来啊.