2014-02-20 1 views
-2

Я работаю над проектом для моего класса программирования C для программы, которая вводит пользовательский ввод либо с клавиатуры, либо из текстового файла, а затем печатает количество каждого символа в файле. Мне удалось получить его для вывода на консоль с помощью stdout, но мне трудно получить его для вывода в файл, когда пользователь использует «-o».C программный ввод петли

Она продолжает давать мне BADFILE (NULL) всякий раз, когда я использую ./counts apple.txt или ./counts apple.txt -o appleresults.txt

 if(argv[i] = "-o") 
     { 
      fp = fopen(argv[i+1], "w"); 
      if(fp == 0) 
      { 
       BADFILE(argv[i+1]) 
      } 
     } 
    } 
} 

Я думаю, что он должен делать с петлей if(argv[i]="-o"), но я не могу показаться, чтобы решить эту ошибку.

+2

Используйте 'strcmp (argv [i]," -o ") == 0' для сравнения строк. –

+1

Тест равенства равен '==', присваивание - '=', а строки - просто указатели - вы не можете сравнивать строки, проверяя равенство указателей. Это абсолютные основы C. Возможно, вам нужно проработать вступительную книгу по C. – paddy

+0

Хорошо. Я понимаю разницу между == и =, но я пропустил ее при чтении кода. – AppleGate0

ответ

2

Как отметил Ю. Хао, ваша строка сравнить это неправильно (вы фактически присваивая значение "-o" для argv[i])

Вы могли бы хотеть, чтобы проверить argv[i+1] является действительной строкой.

Я не вижу вас в объявлении fp, но я предполагаю, что это FILE*.

Для записи вывода в файл используйте fputs(char* , FILE*) И, наконец, не забудьте закрыть файл, когда закончите.

Смежные вопросы