【问题标题】:scanf formatted multiple special characters with array [duplicate]scanf用数组格式化多个特殊字符[重复]
【发布时间】:2018-10-13 16:27:58
【问题描述】:

我想要 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;
}

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

【问题讨论】:

  • sn-p 的代码对我来说很好用。您能否添加程序的整个源代码,以及复制和粘贴确切的输入和输出,包括您按 Enter 的位置?
  • if (scanf(...) != 3) exit(EXIT_FAILURE);
  • scanf("%c %c %c" --> scanf(" %c %c %c" 加空格。否则 &amp;a[i] 是换行符。

标签: c scanf special-characters formatted-input


【解决方案1】:

要读取可选用空格分隔的单个字符符号,您必须在格式字符串中在%c 之前使用 显式忽略此空格。

还要检查scanf()的返回值。

这是一个更正的版本:

#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;
}

【讨论】:

  • 感谢您的回答。
猜你喜欢
  • 2015-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-21
  • 1970-01-01
  • 1970-01-01
  • 2018-06-02
相关资源
最近更新 更多