首页 > 解决方案 > 如何以最简单的方式使用 scanf() 引入多个字符串?

问题描述

如何使用 scanf() 在输入和输出中引入多个字符串?是否可以在不使用 100 个符号(例如a, b, c, d, e -> "%c %c %c", a, b, c等)的情况下做到这一点?我输入这个:

#include <stdio.h> 
int main()
{
    char user_str[20];
    scanf("%s", user_str);
    printf("%s", user_str);
    return 0;
}

哪个适用于作为输入和输出的第一个单词,但是如果我想在文本中引入 100 个带空格的命题,我该如何以最简单的方式键入代码来做到这一点?

标签: c

解决方案


正如@Yunnosch 所说,最好的方法是使用循环和数组。考虑一个简单的情况,您要读取 4 个最长为 19 个字符的字符串。我们有长度 20 为终止空字符留出空间。

#include <stdio.h>

int main() {
    char input[4][20];

    for (int i = 0; i < 4; i++) {
        scanf("%19s", input[i]);
    }

    for (int i = 0; i < 4; i++) {
        printf("%s\n", input[i]);
    }
}

这很容易扩展到 100 个字符串。如果您使用了足够的内存,您可能希望使用malloc它来分配它,但相同的基本模式将继续。


推荐阅读