Любой знает, что такое ASCII-значение i.
Я пытаюсь printf("%d",EOF);
но его печать -1
а также попробуйте printf("%c",EOF);
но его экран пустой печати.
чтобы кто-нибудь знал, какой ключ для EOF
.
Любой знает, что такое ASCII-значение i.
Я пытаюсь printf("%d",EOF);
но его печать -1
а также попробуйте printf("%c",EOF);
но его экран пустой печати.
чтобы кто-нибудь знал, какой ключ для EOF
.
EOF
(как определено в языке C) не является символом/не значением ASCII. Поэтому getc
возвращает int
, а не unsigned char
- потому что чтение символа может иметь любое значение в диапазоне unsigned char
, а возвращаемое значение getc
также должно быть в состоянии представить несимвольное значение EOF
(что обязательно отрицательно).
Фактическое значение EOF определяется системой и не является частью стандарта.
EOF
является int
с отрицательным значением, и если вы хотите его распечатать, вы должны использовать строку формата %d
. Обратите внимание, что это только скажет вам его значение в вашей системе. Вам все равно, какова его ценность.
нет такой вещи, как значение ascii EOF. Существует ASCII-стандарт, который включает в себя 127 символов, EOF не является одним из них. EOF равно -1, потому что то, что они решили #definined, как в этом конкретном компиляторе, может быть что угодно.
Как сказал Хеффернан, эта система определена. Вы можете получить к нему доступ через константу EOF (это константа?):
#include <stdio.h>
int main(void)
{
printf("%d\n", EOF);
}
После компиляции:
c:\>a.exe
-1
c:\>
EOF не имеют значения ASCII, как они сказали.... без проблем с этим
также вы можете избежать странного символа, который появляется в конце (который представляет собой числовое представление EOF), делая условие if
, вот пример:
#include <stdio.h>
int main(void)
{
FILE *file = fopen("/home/abdulrhman/Documents/bash_history.log", "r");
FILE *file2 = fopen("/home/abdulrhman/Documents/result.txt", "w");
file =
file2 =
char hold = 'A';
while(hold != EOF)
{
hold = getc(file);
if(hold == EOF) break; // to prevent EOF from print to the stream
fputc(hold, file2);
}
fclose(file);
return 0;
}
то есть
EOF не является символом ASCII. Его размер не равен 1 байту в сравнении с размером символа, и это можно проверить с помощью
int main() {
printf("%lu", sizeof(EOF));
return 0;
}
Однако всегда определяется как -1. Попробуйте
int main() {
printf("%d",EOF);
return 0;
}
Комбинация клавиш для EOF составляет Crtl + D. Символьный эквивалент EOF зависит от машины. Это можно проверить следующим образом:
int main() {
printf("%c", EOF)
return 0;
}
для всех целей и задач 0x04 EOT (конец передачи, так как это нормальный сигнал и функция чтения для остановки и обрезания файла в этой точке.