我正在使用fgetc()
从仅由数字组成的文件中读取字符。然后我将字符转换为int并将其打印出来。没关系。但在打印完所有数字后,最后我得到-38-49
个值。我用Google搜索了,但那里没有任何关于它的信息。
在输入文件中,我有以下内容:0105243100000002200000010001318123
outpuf是这样的:0105243100000002200000010001318123-38-49
我的代码:
do
{
c1 = fgetc(fread)-'0';
if (!isspace(c1))
{
printf("%d", c1);
}
if (feof(fread))
{
break;
}
} while (1);
答案 0 :(得分:1)
您正在读取换行符(10)和EOF返回值fgetc(-1)。提取' 0' (48)从那些产生负数。
检查char是否有效,它必须在[' 0',' 9']
范围内c1 = fgetc(fread);
if(c1 >= '0' && c1 <= '9') {
c1 -= '0';
// ...
}
答案 1 :(得分:0)
使用fgetc
阅读文件时,您应首先检查EOF
,以检测文件的结尾
int c, n;
while ((c = fgetc(f)) != EOF) {
if (isdigit(c)) {
n = c - '0';
printf("%d", n);
}
}
否则,您使用EOF
值并获得否定结果。