web-dev-qa-db-ja.com

scanfを使用してスペースで区切られた数値を読み取る方法

Scanf()関数を使用して、スペースで区切られた数値(整数型)を読み取りたい。
次を読みました

C、単一の入力行から複数​​の数値を読み取る(scanf?)
スペースを含むscanfの読み方
それはあまり役に立ちません。区切り文字としてスペースを使用して数値を読み取るにはどうすればよいですか。たとえば入力として次の番号があります2 5 7 4 3 8 18今、これらを異なる変数に保存したい。
助けてください。

26
Jainendra

デフォルトでは、スペース/エンターでscanfが値を読み取ると思います。整数を印刷する場合は、「%d」の間にスペースを入れることができます。他の場合も同じです。

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

同様に、コンマ区切り値を読み取りたい場合は、次を使用します。

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

_%s[^\n]_として読み取る

次に、文字列の各charを読み取り、それがcharである場合はatoi()を実行し、そうでない場合は無視します。

3
Satya

受信変数のリストを使用するのと同じくらい簡単なはずです:

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

3
user694833
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;
}
2
niraj.nijju

scanfは区切り文字として空白を使用します。したがって、scanf("%d", &var)とだけ言うと、空白をスキップしてから整数(次の非数字までの数字)だけを読み取ります。

空白は、空白、タブ、改行、キャリッジリターンなどの空白であることに注意してください。それらのいずれも空白であり、それらの1つ以上は連続する整数を区切るのに役立ちます。

2
Chris Dodd