美文网首页
C语言笔记(2)-文件

C语言笔记(2)-文件

作者: deactivateuser | 来源:发表于2016-06-17 17:50 被阅读16次

    前些天在复习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);
        }
    

    相关文章

      网友评论

          本文标题:C语言笔记(2)-文件

          本文链接:https://www.haomeiwen.com/subject/ltuvdttx.html