关于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组数据,每输入一行字符串(中间可能有空格),就把它打印出来。
运行出错。
{
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有点奇怪?
什么错误?
把错误贴出来啊.