例如,如果我有一个输入看起来像这样:10 3 128,但是还有第二个输入看起来像这样:16 2 F
如何扫描这些值? 我尝试将其读取为字符串,然后尝试将其转换为int,或在需要时将其保留为char。
fscanf(in, "%d %d %c or %d, from, to, numorhex);
我的程序基本上是一个数字系统转换器,我想知道如何扫描十六进制字符和整数。
答案 0 :(得分:0)
首先,您可以将扫描的所有内容存储在int
中,也可以存储为char
。
扫描后要打印时。您可以同时使用两种类型。
答案 1 :(得分:0)
您可以执行以下操作:
int main(void)
{
char *line[] = {"10 3 128", "16 2 F", NULL};
int nb1;
int nb2;
int nb3;
char letter;
char end;
for (size_t i = 0; line[i]; ++i) {
if (end = EOF, sscanf(line[i], "%d %d %d%c", &nb1, &nb2, &nb3, &end) == 3 && end == EOF) {
printf("number number number : %d %d %d\n", nb1, nb2, nb3);
} else if (end = EOF, sscanf(line[i], "%d %d %c%c", &nb1, &nb2, &letter, &end) == 3 && end == EOF) {
printf("number number letter : %d %d %c\n", nb1, nb2, letter);
} else {
printf("format line not supported : %s\n", line[i]);
}
}
return (0);
}
请真正警惕“%c”文件可以接受任何字符,例如“ 1”,因此也许您会希望限制在您认为是字母的字符中获取%c的值。