Я пытаюсь написать код, который читает файл и печатает символы из него. Если символ нечитабельный, он должен печатать ?
. Если в файле есть ошибки, код возвращает -1
, иначе он возвращает количество прочитанных символов. Как-то это не работает должным образом, потому что я не могу его скомпилировать.Чтение C из файла
int printfile(const char *filename)
{
FILE *f = fopen(filename, "r");
int i, c;
char k = "?";
while ((i = fgetc(f)) != EOF) {
c++;
if(isprint(i)){
printf("%c ", i);
}
else if (ferror(f)) return -1;
else {
printf("%c", k);
}
}
return c;
}
Должен ли я зарезервировать место для этого или что-то, чтобы заставить его работать, или код является неправильным.
В каком виде это не работает должным образом? – Henningsson
«Как-то это не работает правильно» не является полезным описанием ошибки. Вход, ожидаемый выход, наблюдаемый выход. На самом деле это отладка 101. Кроме того, ваш примерный код должен быть скомпилирован в программу, т. Е. Иметь 'int main()' и все необходимое включает. – DevSolar
Во-первых, вы не инициализируете 'c'. Значение, которое оно начинается, является неопределенным. Во-вторых, вы не закрываете файл с помощью 'fclose()'. В-третьих, вы никогда не проверяете, что исходный 'fopen()' преуспел. –