2015-03-17 4 views
0

У меня есть назначение, где я реализую двоичный поиск и линейный поиск. Выполняется «трудная» часть, и оба эти метода реализованы и работают. Мой профессор хочет, чтобы мы тестировали массивы с большим количеством целых чисел. Он дал нам файл .in, который внес вклад в стиле, который он хочет, и я пытаюсь использовать freopen для чтения файла.Использование 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 не было. Моя основная проблема заключается в чтении входного файла в главном, а не в ручном вводе в терминал. Помоги пожалуйста.

+1

Добавление «\ п» в конце файла должно помочь. – Matt

+0

Что вы имеете в виду? – GusGus

+0

Если вы можете использовать C++, посмотрите на ifstream, если нет, каждая ОС предоставляет функцию ввода-вывода файла, такую ​​как linux open и read ... Честно говоря, я не понимаю вашего значения. –

ответ

0

Я прочитал все целые числа в файле input.in, просто используя fscanf().

Вот мой код.

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

+0

Спасибо за ввод! Мне нравится, как есть другой способ сделать это внутри файла, а не читать текст в терминале. таким образом я могу его отладить. – GusGus