gets
gets函数原型:
char*gets(char*buffer);
gets函数功能:
从键盘上输入字符,直至接受到换行符或EOF时停止,并将读取的结果存放在buffer指针所指向的字符数组中。
读取的换行符被转换为’\0’,做为字符数组的最后一个字符,来结束字符串。
注意:gets函数由于没有指定输入字符大小,所以会无限读取,一旦输入的字符大于数组长度,就会发生内存越界,从而造成程序崩溃或其他数据的错误。
fgets
fgets函数原型:
char *fgets(char *s, int n, FILE *stream);
fgets函数功能:
从文件指针stream中读取字符,存到以s为起始地址的空间里,直到读完n-1个字符,或者读完一行。
注意:调用fgets函数时,最多只能读入n-1个字符。读入结束后,系统将自动在最后加’\0’(‘\n’会被当作字符处理,作为字符串的一部分)。
gets会不会读入换行符?
#include <stdio.h>
#include <string.h>
#define N 5
int main()
{
char s1[N];
char s2[N];
char s[5];
scanf("%s",s);
gets(s1);
gets(s2);
printf("s1=%s,共%d个字符\n",s1,strlen(s1));
printf("s2=%s,共%d个字符\n",s2,strlen(s2));
printf("%d\n",s1[0]);
}
输入
分析
输入的是
a回车
b回车
a被s接收了
s1接收到回车符,将其转换成’/0’
b被s2接受了
结论
gets读取到’\n’会将其转换成’\0’