gets--vs--fgets
gets fget的区别
这两个函数都能从标准的输入流中读取信息,比如从键盘中输入信息,但是有些区别。
使用gets当输入的字符多于预定个数时候,会造成溢出,程序报错。
int main(int argc, const char * argv[]) { char search_for[10]; printf("Search for:"); gets(search_for); printf("str is %s",search_for); return 0; }
但是使用fgets能够解决这个问题,当超出时候,会自动截取。需要注意的地方是fgets只能获取n-1个字符,如下面的例子,字符数组的长度是10,但是能够接受的字符个数
只有9个,因为最后的一个字符结尾还需要一个结束符号'\0'.
char search_for[10]; printf("Search for:"); fgets(search_for,sizeof(search_for),stdin); printf("str is %s",search_for); return 0; }