while(!feof(fp)){
fgetc(fp);//最后一个收到的是文件结束符号,当然不是字符串的一部分!
num++;//而此处加了1
}
所以最后字符串的长度要减一。
而你修改后,条件先不满足,不进入循环了,没有num++的动作。
no
它减一,不是为了减到字符串的长度,是为了减去多余的 -1
如果你把它改成
fgetc(fp);
while(!feof(fp)){
fgetc(fp);
num++;
}
就不会错了
如果你不知道是为什么,你可以试一试用你的办法输出文本,你会发现,它最后会多出一个空格出来,减的就是这个空格(其实是这个空格是 -1)