尝试对文本文件中的值求和,将无法识别的字符作为输出接收?

时间:2016-10-16 22:10:34

标签: c file reader

使用C,我正在尝试总结文件中的数字。该文件包含以下数字:

123
456
788
...
356

运行代码时,它正确地要求输入并打印我输入的数字。但是,它不会对文件求和,只显示一个无法识别的字符符号,就像一个小?。我不认为这个数字超过了分配的INT_MAX_SIZE。什么似乎是问题?

#include <stdio.h>

main() {

    //Number variable to assign each line to 
    int c;
    int fds[2];
    int childid;
    int size;
    int number;
    int sum;

    printf ("Enter the number of processes to create: ");
    scanf ("%d", &number);
    printf ("You entered: %d", number);
    printf("\n");

    //File I/O operations
    FILE *file;

    //Open file for reading
    file = fopen("Project1_OS/project1_data/file1.dat", "r");

    //If file is found
    if (file) {
        //While file has data to be read
        while ((c = getc(file)) != EOF)
            //Print data
           //putchar(c);
            sum+=c;         


    //Close the file I/O
    fclose(file);
    }
    putchar(sum);

}

1 个答案:

答案 0 :(得分:1)

首先getc它是一个从文件中读取字符而不是整数的函数。 你必须使用fscanf

fscanf(file,"%3d",&c)

putchar它是打印字符而不是整数的函数。 所以你必须写:

printf("%d",sum);