从C,Xcode中的文件中读取整数

时间:2014-11-03 19:28:51

标签: c xcode file-io readfile scanf

在Xcode上运行下面编写的代码时,我得到了奇怪的输出。程序只是从命令行参数给出的文件中读取整数,并输出这些整数的数组。

这是我得到的结果:

" 0程序以退出代码结束:0"

#include <stdio.h>
#include <stdlib.h>
int main(int argc, const char * argv[]) {

FILE* file;
file = fopen(argv[1], "r");
if (!file) {
    printf("error occured!! make sure right file is provided");
}
else{
    int i = 0;
//        int value;
    int array[atoi(argv[2])];
    while (!feof(file)) {
        fscanf(file, "%d", &array[i]);
        printf("%d ", array[i]);
        i++;
    }
}

return 0;
}

但是,如果我从终端运行相同的代码,它会输出预期的结果:

run from terminal

我想问题可能是我在Xcode中提供的论点,但我无法弄清楚究竟是什么。

arguments, Xcode

更新: 我的input.txt文件包含以下内容: &#34; 1 2 3 4 5&#34;

更新: 的解决 似乎上次更新后Xcode中存在一个错误。当文件名添加到参数部分时..它不会在调试文件夹中创建它们。我手动创建了文件&#34; input.txt&#34;在以下文件夹中:/ Users / name / Library / Developer / Xcode / DerivedData / percentile-ecpffkfxacqgpggopnguhvlicvtt / Build / Products / Debug(可以通过选择&#39; Show In Finder&#39;来自&中的可执行文件名来访问它) #39; Xcode项目导航器中的产品&#39;组 它起作用了。

1 个答案:

答案 0 :(得分:1)

看看“while( !feof( file ) )” is always wrong

考虑使用fscanf的结果退出循环:

int temp;
while (fscanf(file, "%d", &temp) == 1) {
    array[i] = temp;
    printf("%d ", array[i]);
    i++;
}