【发布时间】:2013-02-08 03:10:39
【问题描述】:
fgets 能否将不可打印的字符读入给定的 char*(看来我不能)?如果不是,那么允许最大数量的输入字符从流到 char* 的替代方法是什么?
编辑(针对我的特殊情况)
我有一个将“Le\D7”打印到标准输出的编码器,该编码器通过管道传输到解码器,该解码器使用以下命令从其标准输入中获取该数据:
if( fgets( inputChars, MAX_BYTES_IN, stdin ) == NULL )
{
fprintf( stderr, "Trouble getting input\n" );
return 0;
}
while( inputChars[crntChar] != '\0' && inputChars[crntChar] != '\n' )
{
printf( "Value %d: %d\n", crntChar, inputChars[crntChar]);
crntChar++;
}
这会导致:
Value 0: 76
Value 1: 101
Value 2: -41
使用 fgetc 也一样
【问题讨论】:
-
哪些字符似乎无法读取?
-
你可以使用 fread cplusplus.com/reference/cstdio/fread
-
ASCII 值 198 未通过。读取的字符有一个巨大的整数值
-
没有 ASCII 198 这样的东西。显示你的代码。也许我们可以发现那里有一个有符号->无符号转换。
-
如果 ascii 198 以
char表示,而不是int或short甚至unsigned char,则会出现有符号->无符号转换