scanf 用数组格式化多个特殊字符

scanf formatted multiple special characters with array

我想要输入 3 个符号,例如|%,但我得到的不是 | | %,而是 | |

航站楼:

| ^ !

 | ^

代码在这里:

#include <stdio.h>

char a[10], b[10], c[10];
int i;
int count;

int main(int argc, char const *argv[]) {
    scanf("%d", &count);

    for (i = 0; i < count; i++) {
        scanf("%c %c %c", &a[i], &b[i], &c[i]);
        printf("%c %c %c\n", a[i], b[i], c[i]);
    }
    return 0;
}

请告诉我我做错了什么。谢谢。

要读取可选地由空格分隔的单个字符符号,您必须在 %c.

之前的格式字符串中使用 </code> 明确忽略此空格 <p>还要检查 <code>scanf() 的 return 值。

这是更正后的版本:

#include <stdio.h>

int main(int argc, char const *argv[]) {
    char a[10], b[10], c[10];
    int i, count;

    if (scanf("%d", &count) == 1 && count <= 10) {
        for (i = 0; i < count; i++) {
            if (scanf(" %c %c %c", &a[i], &b[i], &c[i]) != 3)
                break;
            printf("%c %c %c\n", a[i], b[i], c[i]);
        }
    }
    return 0;
}