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
全部评论

相关推荐

点赞 评论 收藏
分享
牛客963010790号:为什么还要收藏
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务