首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于puts,gets的有关问题

2014-01-01 
关于puts,gets的问题//#include stdafx.h#include stdio.hint main(){char str1char str2[10]puts(

关于puts,gets的问题

//

#include "stdafx.h"
#include "stdio.h"
int main()
{
char str1;
char str2[10];
puts("please enter a character ");
str1=getchar();        //获取字符
putchar(str1);     //输出获得的字符
puts("please enter string");//        提示输入字符串
gets(str2);                 //从输入流中抓取字符串
puts(str2);               //输出获得的字符串
return 0;
}

请问大神,这是什么问题
[解决办法]
第一,不存在不知道的时候;
即你一定会知道要读多少个字符,然后定义这么大小的buffer,并调用;
(比如可以先读入一个整数,表示用户会输入这么多个字符,但这种场景很少见,不过它确实工作)
printf("how many characters would you input? ");
int n;
scanf("%d", &n);
char * buffer = malloc(n);
gets_s(buffer, n);
...
free(buffer);
(又或者,作为程序的实现者,你可以定义你只读80个字符,然后问题就简单了;
总之,你一定知道会又多少个字符)

第二,确实不知道个数;
这种情况下,问题的解决方法就是“反复读”,直到读入的字符串的长度小于你的buffer的大小,这就表示读到了结尾的\n,大概是这样:
char buffer[80 + 1];
gets_s(buffer, 81);
// process_buffer
while (strlen(buffer) == 80)
{
gets_s(buffer, 81);
// process buffer's content
}
作为练习,你可以想想如果输入了80个字符,然后是个回车,这个程序是怎么跑的。

热点排行