2014-09-24 92 views
1

截至目前,当我尝试使用我的输入装入一个无符号字符数组时,每个输入字符都被视为字符。我如何让程序知道我正在输入无符号字符?如何读取由空格分隔的无符号字符c

输入: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阵列与输入中提供的数字。

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

+2

您可以使用'strtol()'或'sscanf()'和朋友来解析字符串中的多位数字。 – 2014-09-24 00:56:06

+1

您可以使用格式化的输入函数,例如'scanf'或'sscanf',或者您可以编写一些代码来解析输入并执行字符串到int的转换。 – 2014-09-24 00:56:12

回答

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(); 
+0

注意:'“%hhu%n”'会和'“%hhu%n”'有相同的效果。 ''%hhu''之前不需要空格,但'if'(* p!='\ 0')...'需要''%n“'中的空格。 – chux 2014-09-24 15:51:03

相关问题