#include <stdio.h>
char* gets(char *s);
char* fgets(char *s, int n, FILE *stream);
相同:
1. fgets的参数stream指定为stdin时,两者都能从标准输入中读取字符串。
2. 读取成功都返回地址,失败都返回NULL
不同:
gets从标准输入中得到字符串,fgets加入了防溢出的措施。此外,两者都从stdin中读取数据时,fgets会多吃一个回车符号'\n'
#include <stdio.h>
#include <string.h>
int main() {
char buf[1024] = {0};
gets(buf);
int len = strlen(buf);
printf("len = %d\n", len);
char buf2[1024] = {0};
fgets(buf2, sizeof(buf2), stdin);
len = strlen(buf2);
printf("len = %d\n", len);
return 0;
}
结果:
aaa
len = 3
bbb
len = 4