質問: pop(); push(a * b); } else { push(atoi(s)); } } printf("%d\n", pop()); return 0; } コードは上記の通りなのですが、わからないのはscanf周りやatoi()のことです。 例えば入力が、文字列型の[1 2 + CTRL+Z]だとしたら、 まず1をatoi()で数値に変えます。 このときに引数がsとなっていますが、s[0]ではないのでしょうか? そして、次の2を示すのはs[1]なので、while(){}内の条件でs[0]が指定されているのは、どういうことなのでしょうか? 以上2点、よろしくお願いします。
回答: scanf("%s",s) による入力の受け取りによって s にどのように文字列が入るのかの認識が, 間違っておられるようです. scanf の直後に printf("'%s'\n",s); 等として, 特に2桁以上の数値を入力した時に, s にどのような文字(列)が入っているかをご確認くださるのが良いかと思います.