Я просто пытаюсь считать каждый символ файла и распечатать его, но когда файл заканчивает читать, но я получаю набор? после того, как это заканчивает читать. Как я фиксирую его?
#include <stdio.h>
int main(void){
FILE *fr; /* declare the file pointer */
fr = fopen ("some.txt", "r"); /* open the file for reading */
/* elapsed.dta is the name of the file */
/* "rt" means open the file for reading text */
char c;
while((c = getc(fr)) != NULL)
{
printf("%c", c);
}
fclose(fr); /* close the file prior to exiting the routine */
/*of main*/
return 0;
}
Я вижу только два преимущества для небольших сайтов быть: 6) RESTful urls, который позволяет SEO. 7) Отсутствие событий ViewState и PostBack (и повышение производительности в целом)
Тестирование для небольших сайтов не является проблемой, равно как и преимущества проектирования, когда сайт в любом случае закодирован правильно, MVC во многом запутывает и затрудняет внесение изменений. Я все еще решаю, стоят ли эти преимущества.
Я ясно вижу преимущество MVC на более крупных сайтах с несколькими разработчиками.
-121--653050-один альтернативный способ
awk -F":" '{print "user: "$1", Home directory is: "$6}' /etc/passwd
-121--4557537- Несмотря на свое имя, getc
возвращает int
, а не char
, так что он может представлять все возможные значения символов и, кроме того, EOF
Если getc
возвращает char
, не будет путь указать конец файла без использования одного из значений, которое может быть в файле.
Поэтому для исправления кода необходимо сначала изменить объявление char c;
на int c;
, чтобы оно могло удерживать маркер EOF при возврате. Затем необходимо изменить условие while loop для проверки EOF
вместо NULL
.
Вы также можете вызвать feof (fr)
, чтобы проверить конец файла отдельно от чтения символа. Если вы сделали это, вы могли бы оставить c
в качестве char
, но вам пришлось бы вызвать feof ()
после того, как вы прочитали символ, но прежде, чем распечатать его, и использовать break
, чтобы выйти из цикла.
При отсутствии удаленного узла возникли проблемы с recentf и удаленным файлом.
(setq recentf-keep '(file-remote-p file-readable-p))
Может решить проблему (удаленный файл будет храниться без тестирования, если он все еще существует).
-121--3926491- fgetc ()
возвращает EOF
в конце файла, а не NULL
.
Заменить «NULL» на «EOF».
В случае неудачи, fgetc()
возвращает EOF.
int c;
while ((c = getc(fr)) != EOF)
{
printf("%c", c);
}
FETGETC ()
Возвращает EOF
на конец файла, а не NULL
.
Измените это
char c;
while((c = getc(fr)) != NULL)
{
printf("%c", c);
}
на
char c;
int charAsInt;
while((charAsInt = getc(fr)) != EOF)
{
c = (char) charAsInt;
printf("%c", c);
}
, другими словами: Вам нужно сравнить с EOF
, а не с NULL
. Также необходимо использовать переменную int
для получения возвращаемого значения из fgetc
. Если Вы используете char
, то сравнение с EOF
может завершиться неудачно, и Вы вернетесь с того места, с которого начали.
GUTC возвращает int .
Изменение CHAN C , к INT C .
также getc возвращает EOF , Измените свой тест против NULL к тесту против EOF
Другие уже решали проблему, имеющуюся, но, а не использование Printf («% C», C);
, вероятно, гораздо более эффективно использовать Putchar (C);
. Когда вы просите , участвуют довольно много накладных расходов
, чтобы распечатать только один символ.