截至目前,当我尝试使用输入加载unsigned char数组时,每个输入字符都被视为char。如何让程序知道我正在输入无符号字符?
输入:86 75 178 98 75 15 78 88
unsigned char input[256];
fgets(input,sizeof(input),stdin);
for(int i=0; input[i] != '\n'; i++){
printf("%hhu ", (unsigned char) input[i]);
}
截至目前的输出为“8 6 7 5 1 7 8 9 8 ....”
我想用输入中提供的数字加载input
数组。
编辑:使用空格作为分隔符来显示第一个无符号字符的结尾会更容易吗?
答案 0 :(得分:2)
读取后解析缓冲区。 "%n"
可让您知道扫描的进度。
unsigned char input[256];
if (fgets(input,sizeof(input),stdin) == NULL) {
HandleEOForIOError();
}
int n;
char *p = input;
unsigned char value;
while (sscanf(p, " %hhu %n", &value, &n) == 1) {
printf("%hhu ", value);
p += n;
}
if (*p != '\0') Handle_LeftOverGarbageInString();