我可以在 scanf 中放入 for 循环吗?

标签 c loops for-loop scanf

我想在一行中输入未知数量的输入。例如,用户可以输入: “答:1 2 3 4 5” scanf() 会将这五个数字存储到一个数组中。问题是程序不知道会有多少输入。

#include <stdio.h>
int main()
{
    int i;
    int input[4];
    scanf("ans: " for(i = 0, i < 3,i++){scanf(" %d", &input[i]);};
    return 0;
}

抱歉,我对编码完全陌生,编写此代码的正确方法是什么?或者这是不可能的? 谢谢:)

最佳答案

fgets()sscanf()"%n" 结合使用

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void) {
    char input[100];
    int arr[10];

    //fgets(input, sizeof input, stdin);
    strcpy(input, "1 2 42 56 -3 0 2018\n"); // fgets

    char *pi = input;
    int tmp, pp, i = 0;
    while (sscanf(pi, "%d%n", &tmp, &pp) == 1) {
        if (i == 10) { fprintf(stderr, "array too small\n"); exit(EXIT_FAILURE); }
        pi += pp;
        arr[i++] = tmp;
    }
    printf("got this ==>");
    for (int k = 0; k < i; k++) printf(" %d", arr[k]);
    puts("");
}

关于我可以在 scanf 中放入 for 循环吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52699455/

相关文章:

r - 输出数据帧的循环中的错误处理

c++ - 无限循环与无限递归。两者都未定义吗?

循环/结构中的 C++ 函数

Javascript:在未定义/空迭代器上捕获 for 循环的最佳方法?

c - 为什么给定的代码会引发堆损坏错误?

c++ - CreateProcess后如何实时获取内存?

python - 查找字符串中字符的所有位置

matlab - 如何创建随行索引和数据变化的三角矩阵?

c - Socket,与INADDR_ANY绑定(bind)时如何查找本地地址

c - 不完整类型 'void' 不可分配 c