首页 > 解决方案 > 如何使scanf根据第一个字符停止从输入中读取?

问题描述

我被困住了,scanf() 有人可以帮我,告诉我如何读取第一个字符,scanf()并根据该字符决定我是要读取 1 个还是 2 个或 3 个输入:例如: scanf( char , int int int)如果字符 S ,我该怎么做输入后停止:

S 45

标签: cscanf

解决方案


对于这类问题,为了更容易恢复错误,您应该一次读取一行输入,fgets()并使用它sscanf()来解析该行。

这是一个例子:

#include <stdio.h>

int main() {
    char line[128];
    printf("Enter letter and values:\n");
    if (fgets(line, sizeof line, stdin)) {
        if (*line == 'A') {
            int a, b, c;
            if (sscanf(line, "A %d %d %d", &a, &b, &c) == 3) {
                printf("A code, a=%d, b=%d, c=%d\n", a, b, c);
            } else {
                printf("A code requires 3 integers\n");
            }
        } else
        if (*line == 'S') {
            int a;
            if (sscanf(line, "S %d", &a) == 1) {
                printf("S code, a=%d\n", a);
            } else {
                printf("S code requires 1 integer\n");
            }
        } else
        {
            /* handle other input codes... */
        }
    }
    return 0;
}

推荐阅读