2013-07-31 4 views
-1

По какой-то причине, когда я отправляю argv, он отправляет обратно неверный указатель на файл. Например, если я отправляю строку из argv из getty.txt, он отправляет обратно указатель файла shakes, и если я отправляю массив char генерации.txt, он отправляет обратно getty.txt. Как мне заставить его отправить верный указатель файла?Возврат неверного указателя на файл

for (i = 3; i < argc; i++) { 
      printf("%s\n", argv[i]); 
      pattern(determineFile(argv[i]), argv[2]); 
     } 

FILE* determineFile(char* file) { 
if (strcmp(file,"getty.txt")) 
    return getty; 
else if (strcmp(file, "shakes.txt")) 
    return shakes; 
else if (strcmp(file, "genesis.txt")) 
    return genesis; 
else 
    return NULL; 
} 

Входной сигнал:

ГРЭП в getty.txt genesis.txt shakes.txt

Выход:

getty.txt

shakes.txt : Все слово - этап,

shakes.txt: И все мужчины и женщины просто игроки.

shakes.txt: У них есть свои выходы и их входы;

genesis.txt

getty.txt: Четыре оценка и семь лет назад наши отцы вывел, на этом

getty.txt: континент, новой нации, задуманной в свободе, и посвященный

shakes.txt

+0

Код, который вы указали, не компилируется. Также, пожалуйста, укажите ввод. – Oswald

ответ

0

strcmp C возвращает 0, если строки совпадают. Попытка:

if(strcmp(a, b) == 0) {/* ... */} 
Смежные вопросы