使用freopen读取文件

时间:2015-03-17 06:02:25

标签: c stdin freopen

我有一个任务,我实现二进制搜索和线性搜索。 “硬”部分已完成,这两种方法都已实施并正常工作。 我的教授希望我们测试具有大量整数的数组。他给了我们一个.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中读取输入文件而不是在终端中手动输入。请帮助。

1 个答案:

答案 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);

输出是。

enter image description here