如何在c中读取由空格分隔的无符号字符
Posted
技术标签:
【中文标题】如何在c中读取由空格分隔的无符号字符【英文标题】:How to read unsigned char delimited by white space in c 【发布时间】:2014-09-24 00:53:17 【问题描述】:到目前为止,当我尝试使用我的输入加载一个无符号字符数组时,每个输入字符都被视为一个字符。如何让程序知道我正在输入无符号字符?
输入: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
数组。
编辑:使用空格作为分隔符来显示第一个无符号字符的结尾会更容易吗?
【问题讨论】:
您可以使用strtol()
或sscanf()
和朋友从字符串中解析多位数字。
您可以使用格式化输入函数,例如scanf
或sscanf
,或者您可以编写一些代码来解析输入并执行字符串到整数的转换。
【参考方案1】:
读取后解析缓冲区。 "%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();
【讨论】:
注意:"%hhu %n"
与" %hhu %n"
具有相同的效果。 "%hhu"
之前不需要前导空格,但if (*p != '\0') ...
需要" %n"
中的前导空格。以上是关于如何在c中读取由空格分隔的无符号字符的主要内容,如果未能解决你的问题,请参考以下文章