我有一个任务,我实现二进制搜索和线性搜索。 “硬”部分已完成,这两种方法都已实施并正常工作。 我的教授希望我们测试具有大量整数的数组。他给了我们一个.in文件,该文件以他想要的样式输入,我正在尝试使用freopen来读取文件。
int main(int argc, const char * argv[]) {
freopen("input.in", "r", stdin); // <-----
int n , s;
scanf("%d %d", &n, &s);
int myAr[n];
int i = 0;
while (i < n) {
scanf("%d",&myAr[i]);
i++;
}
int myAr2[s];
int j = 0;
while (j < s) {
scanf("%d",&myAr2[j]);
j++;
}
...
该文件以一行中的2个数字,列表中的元素数量以及您在第一个列表中查找的元素数量开始。
然后它读取包含列表1中所有数字的行,然后下一行读取列表2中的所有数字
我无法让freopen()正常工作,我想知道是否有任何建议。
示例input.in文件:
10 2
2 4 6 7 9 10 24 26 29 33
26 35
我的代码稍后会告诉我26找到了,35则没找到。我的主要问题是在main中读取输入文件而不是在终端中手动输入。请帮助。
答案 0 :(得分:0)
我只需使用fscanf()
即可读取input.in文件中的所有整数。
这是我的代码。
int j;
FILE *fp;
fp = fopen("input.in", "r");
while( fscanf(fp,"%d",&j) > 0 )
{
printf("%d\n", j);
}
fclose(fp);
输出是。