学习Head First C的时候看到了一段代码心生疑问
fgets(search_for, 80, stdin);
search_for[strlen(search_for)-1]='\0';
1.没有弄清sizeof()和strlen()的区别。sizeof()是计算存储空间大小,无论又没有‘\0’或者是’\n’
2.strlen()检测直到找到‘\0’前字符串的长度,例如 strlen(‘China\0’)=5
3.看了一些优快云的文章有的作者说是’\n’有的说是‘\0’,实际结果是(Windows验证)fgets()的字符串结尾既包含‘\0’又包含‘\n’,如下代码可验证(修改对应位置为\0或者\n即可。)
4.例如 fgets(“China”) = "China\n\0"
#include <stdio.h>
#include <string.h>
void main()
{
char answer[100],*p;
printf("Type something:\n");
fgets(answer,sizeof (answer),stdin);
if((p = strchr(answer,'\n')) != NULL)
*p = '\0';//手动将\n位置处的值变为0
printf("You typed \"%s\"\n",answer);
}