Что происходит, когда я пишу (через fputc
) значение больше 255 в файл?fputc и fgetc (в C) для значений больше 255?
Вот мой код:
inputFile = fopen("arx.txt", "wr");
int a = 253;
for (int i = 0; i < 5; i++) {
printf("writing %d\n", a);
fputc(a++, inputFile);
}
int b = 2 * 253;
for (int i = 0; i < 5; i++) {
printf("writing %d\n", b);
fputc(b++, inputFile);
}
и вот что я вижу в файле
ύώ ϊϋόύώ
мне нужно записать эти значения в массивы вместо файлов, и я должен знать, что происходит внутри fputc
и fgetc
.
Любая помощь?
Документация для чтения помогает. Из ['man fputc'] (https://linux.die.net/man/3/fputc): * fputc() записывает символ c, **, переданный в неподписанный символ **, в поток. * –
' «wr» 'не является строкой стандартного режима для' fopen() '. – chqrlie
Возможно, это может пригодиться вам: http://www.cprogramming.com/tutorial/unicode.html При работе со значениями> 255 вы находитесь вне диапазона символа unsigned. Таким образом, вам нужно будет работать со значениями не как символы, а как некоторые более крупные типы данных, такие как шорты или ints. Конечно, для этого вам придется избегать нормальных функций обработки символов, потому что многие из них будут несовместимы с этими большими значениями. – SpencerD