在mac desktop 11db错误中读取c中的文件

时间:2013-02-21 17:47:17

标签: c xcode macos file

我是第一次学习C的学生。我输入了一个教授给出类的例子,它应该从一个名为“input.txt”的文件中读取一些整数。

以下是代码:

#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;
}

我正在尝试让这个程序按照它应该打印出“总和”,但是当我运行它时,没有错误,但我得到的唯一输出是(11db)。

我创建了一个名为“input.txt”的文件并将其保存到桌面,但它无法正常工作。

文件“input.txt”包含:

1 2 3 4 5

我不知道我是否应该以某种方式在某处定义文件路径或在何处/如何执行此操作。

非常感谢任何帮助。

谢谢!

1 个答案:

答案 0 :(得分:1)

我的猜测是错误是因为打开文件失败了。您应该检查fopen是否返回非NULL。打开文件是一种经常失败的操作。例如:

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

除非给出以“/”开头的完整路径名,否则fopen会打开进程当前工作目录中的文件,这可能不是桌面。

此外,当您到达文件末尾时,fscanf将返回值EOF。变量 num 设置为零。这是一种读取整数文件的方法:

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