C语言笔记(2)-文件

前些天在复习C语言文件操作时遇到了这样一个问题,读取文件时,文件末尾多了个/377


以下是错误代码:

#include <stdio.h>

#define FILENAME "output.txt"

/**
 *  Write a string into a file.
 */
void writeFile(){
    FILE *fp;
    char ch;
    
    if ((fp=fopen(FILENAME,"w"))==NULL) {
        printf("Cannot open file.\n");
    }
    printf("Please input a string. (End up with '#')\n");
    while ((ch=getchar())!='#') {
        fputc(ch, fp);
    }
    fclose(fp);
    printf("Write successfully.\n\n\n");
}
/**
 *  Read a string from a file.
 */
void readFile(){
    FILE *fp;

    if ((fp=fopen(FILENAME,"r"))==NULL) {
        printf("Cannot open file.\n");
    }
    printf("Read file...\n");
//-----------这里出错-----------------   
    while (!feof(fp)) {
        putchar(fgetc(fp));
    }
//-----------------------------------
    
    fclose(fp);
    printf("\nRead successfully.\n");
}

int main(int argc, const char * argv[]) {
    writeFile();
    readFile();
    return 0;
}

错误原因

当换种写法后找到了错误原因。

printf("EOF=%c",EOF);

输出EOF=/377

建议写法

char c;
    while(1) {
        c = fgetc(fp);
        if( feof(fp) )
        {
            break ;
        }
        putchar(c);
    }

    char ch;
    while ((ch=fgetc(fp))!=EOF) {
        putchar(ch);
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容