我如何仅使用一个scanf输入任意数量的整数?

问题描述 投票:-2回答:1

我正在学习atm数组,我必须像示例中一样,在一个命令中输入它们。问题在于它应该接受任意数量的整数。

输入:1 2 3 4 5 7 8

我不知道该怎么做。我正在使用循环。

c integer scanf
1个回答
0
投票

您可以先将输入内容读入字符串,然后使用sscanf函数从该字符串中读取整数来完成此操作。后者将告诉您读取了多少个整数。

这里有个简短的程序,希望能向您展示如何做:

#include <stdio.h>

int main()
{
    char inBuffer[100];
    printf("\nEnter a list of up to 10 numbers: ");
    fgets(inBuffer, sizeof(inBuffer), stdin); // Read in characters into the buffer
    int a[10] = {0, }; // Initialize all elements to zero
    // Now read in how ever many (up to 10) numbers there are in the buffer...
    int n = sscanf(inBuffer, "%d %d %d %d %d %d %d %d %d %d",
        &a[0], &a[1], &a[2], &a[3], &a[4], &a[5], &a[6], &a[7], &a[8], &a[9]);
    printf("\nYou entered %d numbers!", n);
    printf("\nNumbers: %d %d %d %d %d %d %d %d %d %d",
        a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9]);
    return 0;
}

当然,当最大数量增加时,这种方法非常麻烦!

请随时要求进一步的澄清和/或解释。

© www.soinside.com 2019 - 2024. All rights reserved.