- ベストアンサー
”123456”といった整数を文字列に変換、その後、文字列を1文字ごとに整数に変換
忙しい中失礼します。 http://oshiete1.goo.ne.jp/qa3424254.htmlでも質問させて頂いたものですが、 今、回答してくださった方の意見を参考に以下の過程をこなそうとしています。 1.整数入力 →scanf関数を使用し、"123456"と入力します。 2.整数を文字列に変換 → printf("Write the SIN: \n"); scanf("%d", &fnum); printf("%c\n",fnum); で、"123456"と数値を入力しても”123456”という値が返されず、@となってしまいます。 どうすれば入力した数値が文字列として返ってくるのでしょうか? どんな文・関数を使用すれば数字を文字列として使用することが可能になるのでしょうか? 今のところ習っている文はif else, swith case, while for,do whileで、 getcharやstr?(string)という関数は習っていません。なので、どうプログラムを書けばいいのか??さっぱりなのです。 でもgetcharやstr?(string)という関数を使用するしか方法はないものなのでしょうか? また、それから 3.文字列を1文字ごとに整数に変換 にする場合、どんな文・関数を使用すれば、1文字”ごと”に整数に変換できるのでしょうか? ごめんなさい、分からないのです。プログラム文、ヒントもしくは参考になるページ等があれば教えて下さい。 よろしくお願いします。 <使用環境:フリーソフト(Borland?)C ANSI C>
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
C言語の文字列を処理する関数を使わずにプログラム化することは難しいです。sprintfとか文字配列の処理とか習ってますか? 私としては前回の#4のtekcycleさんの数値で処理するほうが良いんじゃないかと思いますが。計算で余りを取る%とか習ってます? どこまでC言語の機能を使ってよいか知っていることを出来るだけ書き出してくださいね。
その他の回答 (2)
- asuncion
- ベストアンサー率33% (2127/6289)
先ほどの「偶数桁の値だけ2倍にする」例です。 #include <stdio.h> #include <math.h> void f(int m, int n) { if (n) { int a = m % 10; f(m / 10, n - 1); printf("%d", (n % 2) ? a : 2 * a); } } int main(void) { int num, m, n; printf("Input the number: "); scanf("%d", &num); m = num; for (n = 0; num; n++) num /= 10; f(m, n); return 0; } (注)インデントのため、全角空白を使っています。
お礼
忙しい中の回答ありがとうございます。 今、これまでの回答を参考にして、自分なりにプログラミングを組んでいるところです。 上記の回答は、自分のプログラミングがダメだった場合(多分私のはダメだろうな・・・)、参考にさせてもらうことにします。 親切にありがとうございました。
- a-saitoh
- ベストアンサー率30% (524/1722)
printfのマニュアルをちゃんと読みましょう。
お礼
は~い。 printfのマニュアル・・・読んでみることにします。 アドバイスありがとうございました。
お礼
!”#4のtekcycleさんの数値で処理するほうが良いんじゃないかと思いますが”今それでやろうとしています。 それならば、私の現在の能力を超えずにプログラミングをこなせるのではないか、と思っています。 数字を文字列化する、というのは私の能力を超えている、だから今の私の能力では出来ない、もしかしたら莫大な時間が掛かってしまうかも・・・と思い、%/*等を使う方向に今自分のプログラムを向けています。 多分そうだ!適切なアドバイスありがとうございました。 遅ればせながら、tekcycleさん、ありがとうございました。