Так вот код, который я пытаюсь заставить работать:Неправильный выход fprintf в с
char* inFile = "input.txt";
FILE *out = fopen("output.txt", "a+");
int i = 0
while(i < 5){
int countFound = findWord(inFile, keyWord[i]);//returns count of keywords in given file
fprintf(out, "%s: %d\n", keyWord[i], countFound);
i++;
}
fclose(out);
Выход этого кода:
youshouldsee1
: 3
youshouldsee2
: 3
youshouldsee3
: 3
youshouldsee4
: 3
youshouldsee5: 1
Ожидаемый результат:
youshouldsee1: 3
youshouldsee2: 3
youshouldsee3: 3
youshouldsee4: 3
youshouldsee5: 1
Я действительно не понимаю, почему вывод такой, не должен ли он печатать строку и int, а затем новую строку? Также обратите внимание, что после последней строки нет новой строки, и должно быть. Я сделал некоторые испытания, и я заметил, что если бы я изменил fprintf
заявление fprintf(out, "%s\n", keyWord[i]);
выход:
youshouldsee1
youshouldsee2
youshouldsee3
youshouldsee4
youshouldsee5
Какой отформатирован намного лучше. Снова обратите внимание, что после последней строки нет новой строки, и должно быть. Я заметил, что, делая это с помощью только printf
операторов, я получаю точно такую же проблему, но результат немного перепутался.
Кто-нибудь знает, что вызывает эту проблему? Очень признателен.
Массив keyWord [] - это двойной указатель, я не уверен, что это имеет значение или нет, но я подумал, что упомянул бы об этом. Это объявлено так char** keyWord;
. И он был создан следующим образом:
char *tempWord = "something";
keyWords[x] = strdup(tempWord);
Это может быть совершенно неуместным, но я подумал, что лучше всего упомянуть об этом.
Ключевое слово string должно иметь символы новой строки в конце их. – Gene
Пожалуйста, добавьте объявления всех переменных, поэтому нам не нужно гадать. – hyde
@Gene, Когда я создаю строку или когда использую fprintf? – JumpingRock