如何读取c中由空格分隔的unsigned char

时间:2014-09-24 00:53:17

标签: c input unsigned-char

截至目前,当我尝试使用输入加载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数组。

编辑:使用空格作为分隔符来显示第一个无符号字符的结尾会更容易吗?

1 个答案:

答案 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();