c语言文件常见错误分析
-
1.文件结束符号标志EOF,即使在空文件也有占一个字符。写入五个字符以后,此时ftell(fp)=6;
-
文件读写标识符(下标)从0开始
-
fscanf()函数从文件流当中读入字符串的时候遇到空格、换行符都作为字符串结束标志。
while(!feof(fp))
{
putchar(fgetc(fp));
}
//feof()函数机制,当走到某一文件读写标识符时,会看后面有字符嘛有则返回0,表示不是文件结束标注EOF,否则返回0;
//对于空文件来说,文件标识符初始为0,其后面有一个字符EOF文件结束标志字符。
while(ftell(fp)<=15)
{
putchar(fgetc(fp));
}
fclose(fp);
//注意还有文件初始就有一个文件结束标识符号EOF
- 将一个字符串写入文件的时候,结尾的回车符号,在读取文件该字符串并输出时,会输出这个回车符号(换行)
#include <stdlib.h>
#define all 3
#include <ctype.h>
#include <string.h>
int main() {
FILE *fp;
fp = fopen("F:\\clion c++\\code\\cmake-build-debug-coverage\\t1.txt", "w+");
char name[all][100];
for (int i = 0; i < all; i++) {
gets(name[i]);
for (int j = 0; name[i][j] != '\0'; j++) {
if (name[i][j] <= 'z' && name[i][j] >= 'a')
name[i][j] = toupper(name[i][j]);
}
fprintf(fp, "%s", name[i]);
}
// printf("%d", ftell(fp));
rewind(fp);
while (!feof(fp)) {
printf("%d",ftell(fp));
putchar(fgetc(fp));
printf(" ");
}
fclose(fp);
return 0;
}
输入:
fasdfad
输出
0F 1A 2S 3D 4F 5A 6D 7�
最后这个符号是EOF