简体   繁体   中英

Read a file in c on mac desktop 11db error

I'm a student learning C for the first time. I typed in an example the professor gave the class, which is supposed to read in some integers from a file called "input.txt".

Here's the code:

#include <stdio.h>

int main() {
    FILE *ifp;
    int num = -1, sum = 0;

    ifp = fopen("input.txt", "r");
    while (num!= 0) {
        fscanf(ifp, "%d", &num);
        sum +=num;
    }
    fclose(ifp);
    printf("The sum is %d.\n", sum);
    return 0;
}

I'm trying to get this program to print out the "sum" like it should, but when I run it, there are no errors yet the only output I get is (11db).

I created a file called "input.txt" and saved it to the desktop, but it's not working.

The file "input.txt" contains:

1 2 3 4 5

I don't know if I'm supposed to somehow, somewhere, define the file path or where/how to do this.

Any help is much appreciated.

Thanks!

My guess would be that the error is because opening the file fails. You should check that fopen returns non-NULL. Opening a file is an operation that often fails. For example:

ifp = fopen("input.txt", "r");
if (ifp == NULL) {
    fprintf(stderr, "Couldn't open the file for reading.\n");
}

Unless given a full path name starting with a "/", fopen opens files in the current working directory of the process, and that is probably not the desktop.

Also, when you reach the end of the file, fscanf will return the value EOF. The variable num will not be set to zero. This is a way to read a file of integers:

while (fscanf(ifp, "%d", &num) == 1) {
    sum += num;
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM