我尝试使用unsigned char ch1 = fgetc(filePointer);
提取字符,但返回的值是 all all255
.这是我的代码:
#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
文件)。谢谢。
在unsigned char ch1 = fgetc(filePointer);
filepointer
指向EOF(-1)
时,在下一个语句中,您正在打印ASCII
值,该值255(bcz ch is declared as unsigned)
。
EOF
定义为#define EOF (-1)
printf("%cn,ch1); /* EOF is not printable char so it prints � */
printf("%dn",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()
。
rewind(filepointer);/* this is required to get first char of file */
unsigned char ch1 = fgetc(filePointer);
fclose(filePointer);
printf("%c", ch1);
当你写入一个*FILE ptr
时,它的指针是前进的,并设置到文件的末尾,准备附加下一个字符。 若要在不重新打开文件并重复使用同一文件指针的情况下读回某些数据,可能需要先倒带指针。
尝试添加
fseek(filePointer, 0, SEEK_SET);
在读回数据之前