在linux下使用gets()会有警告,形式如下:warning: the `gets' function is dangerous and should not be used.所以需要使用fgets()。由于linux下gets函数没有指定输入字符的大小,如果输入字符大于定义的数组长度时,就会发生内存越界问题。而用fgets函数则可以根据定义数组的长度自动截断字符,而消除一些安全隐患。fgets函数原型:fgets(char *s,int size,File *stream);例如:fgets(src,100,stdin); fputs(src,100,stdout); //src是函数名,100是总长度,stdin和stdout为标准输入和输出。 #include <stdio.h> /* int main() { int count = 0; char *a = "hello!"; while(*a != '\0') { a++; count++; } printf("length=%d\n",count); printf("length=%d\n",strlen(a)); //使用strlen return 0; } */ int main() { int i = 0; int count = 0; char str[20] = {0}; printf("Please input a string:\n"); //gets(str); fgets(str,20,stdin); //fgets输入字符串 for(i = 0; i < 20 ; i++) { if(str[i] != '\0') { count++; } else { break; } } printf("length=%d\n",count); return 0; }