如何扫描在同一输入位置上是否可能有一个字符或整数

时间:2018-11-28 16:15:06

标签: c char int scanf

例如,如果我有一个输入看起来像这样:10 3 128,但是还有第二个输入看起来像这样:16 2 F

如何扫描这些值? 我尝试将其读取为字符串,然后尝试将其转换为int,或在需要时将其保留为char。

fscanf(in, "%d %d %c or %d, from, to, numorhex);

我的程序基本上是一个数字系统转换器,我想知道如何扫描十六进制字符和整数。

2 个答案:

答案 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的值。