Entire file is not read in C (EOF occurs unexpectedly)

前端 未结 2 545
长发绾君心
长发绾君心 2021-01-24 09:56

I am trying to print contents of a file with approximately 4000 characters. Somehow the program records only the first 220 characters and terminates.

int main(vo         


        
2条回答
  •  情深已故
    2021-01-24 10:55

    the following code:

    uses fgets() rather than the obsolete gets()
    removed the newline from the user input
    uses the proper size_t rather than int for indexing
    is consistently indented
    has modification to the printf statements to display size_t rather than int
    compiles cleanly (which surprises me as payload is set but never used)
    
    #include 
    #include 
    #include 
    
    int main(void)
    {
        int ch = ' ';
        char file_name[25];
        char payload[3904];
        FILE *fp;
    
        printf("Enter the name of file you wish to see\n");
        fgets(file_name, sizeof(file_name), stdin);
    
        // remove trailing newline
        char *newline = strstr(file_name, "\n" );
        if (newline )  *newline = '\0';
    
        fp = fopen(file_name, "r"); // read mode
        if (fp == NULL)
        {
            perror("Error while opening the file.\n");
            exit(EXIT_FAILURE);
        }
    
        // implied else, fopen successful
    
        printf("The contents of %s file are :\n", file_name);
    
        size_t gin = 0;
        while ( ((ch = fgetc(fp)!=EOF)) && (sizeof(payload) > gin) )
        {
            printf("%ld) %x \n",gin, ch);
            payload[gin++] = ch;
        }
    
        printf("Also, value of gin is %ld --->", gin);
        getchar();
    
        //...rest of the code
        return(0);
    }
    

提交回复
热议问题