如何使用scanf读取空格分隔的数字

时间:2012-05-03 06:03:41

标签: c scanf

我想读取使用scanf()函数用空格分隔的数字(整数类型) 我已阅读以下内容

C, reading multiple numbers from single input line (scanf?)
how to read scanf with spaces
这对我没什么帮助。 如何读取带空格的数字作为分隔符。对于例如我有以下数字作为输入2 5 7 4 3 8 18现在我想将它们存储在不同的变量中。
请帮忙。

6 个答案:

答案 0 :(得分:33)

我认为scanf用space / enter读取默认值。如果要打印整数,则可以在'%d'之间提供空格。其他情况也一样。

scanf("%d %d %d", &var1, &var2, &var3);

同样,如果你想读取逗号分隔值,请使用:

scanf("%d,%d,%d", &var1, &var2, &var3);

答案 1 :(得分:3)

阅读为%s[^\n]

然后阅读字符串的每个char,如果是atoi()则执行char,否则忽略它。

答案 2 :(得分:3)

它应该像使用接收变量列表一样简单:

scanf("%i %i %i", &var1, &var2, &var3);

答案 3 :(得分:2)

int main()
{
char string[200];
int g,a,i,G[20],A[20],met;

gets(string);
g=convert_input(G,string);

for(i=0;i<=g;i++)
    printf("\n%d>>%d",i,G[i]);
return 0;
}

int convert_input(int K[],char string[200])
{
int j=0,i=0,temp=0;
while(string[i]!='\0')
{
    temp=0;
    while(string[i]!=' ' && string[i]!='\0')
        temp=temp*10 + (string[i++]-'0') ;
    if(string[i]==' ')
        i++;
    K[j++]=temp;
}
return j-1;
}

答案 4 :(得分:2)

scanf使用任何空格作为分隔符,因此如果您只是说scanf("%d", &var),它将跳过任何空格,然后读取整数(数字直到下一个非数字),仅此而已。< / p>

请注意,空格是任何空格 - 空格,制表符,换行符或回车符。其中任何一个都是空格,其中任何一个或多个都用于划分连续的整数。

答案 5 :(得分:-3)