在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;
}
但是,如果我从终端运行相同的代码,它会输出预期的结果:
我想问题可能是我在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;组 它起作用了。
答案 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++;
}