我尝试使用unsigned char ch1 = fgetc(filePointer);
提取字符,但返回的值是allways 255
。这是我的代码:
#include <stdio.h>
#include "anotherCFile.c"
int main(int argc, char **argv)
{
int ch;
FILE* filePointer;
filePointer = fopen("text.txt", "w+");
ch = fgetc(stdin);
while (ch!=EOF) {
fputc(ch, filePointer);
ch = fgetc(stdin);
}
unsigned char ch1 = fgetc(filePointer);
fclose(filePointer);
printf("%c", ch1);
return 0;
}
对于我检查的任何输入(s.a。ABC
),输出为�
。当我将行printf("%c", ch1);
更改为printf("%d", ch1);
时,输出始终为255
。我想得到我在输入中输入的字符。
(正确创建text.txt
文件)。感谢。
答案 0 :(得分:1)
当您写入*FILE ptr
时,其指针会前进并设置为文件末尾,准备附加下一个字符。
要重新读取某些数据而不重新打开文件并重复使用相同的文件指针,您可能需要先回滚指针。
尝试添加
fseek(filePointer, 0, SEEK_SET);
在阅读数据之前
答案 1 :(得分:1)
在unsigned char ch1 = fgetc(filePointer);
filepointer
指向EOF(-1)
时,在下一个语句中,您正在打印ASCII
的{{1}}值。
255(bcz ch is declared as unsigned)
定义为EOF
#define EOF (-1)
我想得到我在输入中输入的字符。?在阅读之前做printf("%c\n,ch1); /* EOF is not printable char so it prints � */
printf("%d\n",ch1); /* fgetc() returns int, As char read is stored in a
variable of type int and that is EOF,and -1
equivalent unsigned value is 255 */
。
rewind() or fseek()