int main(void){ char buffer[5] = {0}; int i; FILE *fp = fopen("haha.txt", "r"); if (fp == NULL) { perror("Failed to open file \"mhaha\""); return EXIT_FAILURE; } for (i = 0; i < 5; i++) { int rc = getc(fp); if (rc == EOF) { fputs("An error occurred while reading the file.\n", stderr); return EXIT_FAILURE; } buffer[i] = rc; } fclose(fp); printf("The bytes read were... %x %x %x %x %x\n", buffer[0], buffer[1], buffer[2], buffer[3], buffer[4]); return EXIT_SUCCESS; }
я поставил восемь 0s в моем файле haha.txt, и когда я запускаю этот код он всегда дает мне:Почему мой getc() всегда возвращает 30, когда вход 0 в C?
Байт чтение были ... 30 30 30 30 30
Может кто-нибудь сказать мне, почему?
Поскольку 'ASCII код 0' является' в шестнадцатеричном 30'. – AntonH
Измените '% x' на'% c' в 'printf'. – ouah