#include "stdio.h"
#include "string.h"
int main()
{
int i,n,cd;
char a[10];
scanf("%d",&n);
for(i=0;i<n;i++)
{
gets(a);
puts(a);
printf("怎么不执行gets?\n");
cd=strlen(a);
printf("-%d-",cd);
}
return 0;}
为什么直接printf了,不先执行gets 。。。
gets函数是以换行符或者EOF为结束标志,如果用空格或者跳格,gets函数会继续等待用户输入。
1、gets函数:
原型:char * gets(char * buffer);
功能:从stdin流中读取字符串,直至读到换行符或EOF时停止,并将读取的结果存放在buffer指针所指向的字符数组中。换行符不作为读取串的内容,读取的换行符被转换为 \0 空字符,并以此结束字符串;
说明:当使用unicode宽字符文本时,请使用宽字符版本函数 _getws()。gets函数可以无限读取,不会判断上限,所以使用时应确保buffer的空间足够大,以便在执行读取操作时不发生溢出。gets函数在C11标准中被移除,改为更加安全的gets_s函数;
头文件:stdio.h;
返回值:若读入成功,返回与参数buffer相同的字符指针。若读入过程中遇到EOF或发生错误,返回NULL指针。所以当遇到返回值为NULL的情况时,应使用ferror或feof函数检查是发生错误还是遇到EOF。
2、例程: