Я работаю на C и пытаюсь прочитать файл и сохранить символы, возвращаемые fgetc в массиве. Проблема в том, что fgetc неоднократно возвращает случайный символ. Помеченное место в комментарии. Например, «wwwwwwwwwwww ...» или «@@@@@@@@@@@@ ...». Любая помощь приветствуется. Вот функция:fgetc не работает C- возвращает тот же символ повторно
void removeCategories(FILE *category, int *prodPrinted){
char more[16] = { '\0' }, hidden[17] = { '\0' }, temp = '\0', mdn[] = { "More Data Needed" }, hnl[] = { "Hidden non listed" };
int newLineCount = 0, i, ch = '\0';
do{
/*shift char in each list -> one*/
for (i = 16; i > 0; i--){
if (i <= 16){
hidden[i] = hidden[i - 1];
}
if (i <= 15){
more[i] = more[i - 1];
}
}
more[0] = hidden[0] = ch = (fgetc(category));
printf("%c", &ch); /*problem is here, prints random char repeatedly*/
if (strcmp(more, mdn) == 0 || strcmp(hidden, hnl) == 0){
prodPrinted[newLineCount] = 0;
printf("%c", more[0]); /*test print*/
}
if (ch == '\n'){
newLineCount++;
}
} while (ch != EOF);
}
должен быть 'Е («% с», ч)' – amdixon
Обратите внимание, что вы должны проверить, является ли 'ch' EOF, прежде чем пытаться его сохранить. Например, 'if (ch == EOF) break;' после строки, назначаемой 'ch'. –