在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;
}