2014-09-24 91 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

相關問題