解決済みの質問
C言語についての質問です
C言語についての質問です
先に投稿した質問は書き洩らしが多かったので再度質問しています。
学校の課題でプログラムを作って提出しなければならないのですが、難しすぎてわかりません。
次のプログラムを作らないといけません。
1、文字列を入力し、char型配列に格納し、配列内の数字をint型に変換するプログラム[convert_a2i]を作成する。
入力した文字に数字以外の文字があった場合には、それまでに変換した値を変換結果とする。
→自分はatoiを使って型変換をするものだと思っていますが、書き方がわかりませんでした
2、int型のデータを入力し、一桁ごとに文字型配列に格納するプログラム[convert_i2a]を作成する。
int型以外の文字が入力された場合は、「0」を変換結果とする。
→こちらはitoaを使って型変換をするものだと思いましたが、これも書き方がわかりませんでした
3、上の1と2をまとめる[henkan]を作成し、一つのプログラム[convert]として作成し、両方の機能が実行できるようにする。
これらの3つのプログラム内のどこかで、関数、ポインタ、構造体を何らかの形で使うこと。
この質問は、活躍中のチエリアンに回答をリクエストしました。
-
- 質問日時:
- 2012/2/14 13:24:19
-
- 解決日時:
- 2012/2/16 10:39:27
-
- 回答数:
- 1
-
- お礼:
- 知恵コイン
- 250枚
-
- 閲覧数:
- 95
-
- ソーシャルブックマークへ投稿:
- Yahoo!ブックマークへ投稿
- はてなブックマークへ投稿
- (ソーシャルブックマークとは)
ベストアンサーに選ばれた回答
前回の質問をみました。
自分で作ったソースがあるなら、今回も質問に書いていればよかったのに。
まるっきり答えを聞くより、ある程度作ったけどどこが間違っていますか?のほうが回答がつきやすいですよ。
(1)
さて、前回のソースをもとに、修正すべき点を書きますね。
#include<stdio.h>
#include <stdlib.h>
void main() {
char str[256];
int inum,*p;
p=&inum;
printf("文字を入力=>");
scanf("%s",&str);
inum=atoi(str);
printf("%d\n",*p);
}
scanf("%s",&str);は間違いです。
scanf("%s",str);でOK。
これでとりあえず課題1はクリアできるはず。
(2)
itoaで良いでしょう。
課題1がほとんどできているので、これにちょこっと手を加えるだけで大丈夫ですよ。
int型の数値を入力させるには、
scanf("%d", &inum);とします。
ポインタを使わないといけないなら、
p=&inum;
scanf("%d", p);
かな。
itoaはちょっと書き方が難しいですかね。
itoa(inum, str, 10);
としましょう。
最初のinumは変換する元の数値、2番目のstrは変換結果を入れるポインタ、3番目の「10」は10進数ですよという意味で、まぁ固定で10でいいと思います。
(3)
ここまできたら、あとは合体させるだけです。
「両方の機能が実行できる」っていうのがよくわかりませんが・・・。
文字列から数値変換と数値から文字列変換を選んで実行するのか、それとも両方連続で実行するのか・・・。
それは問題の文章からは分かりませんでした。
あと、関数を使うことという難関がありますね。
簡単なサンプルを掲載しておくので、参考にしてください。
--------------
#include<stdio.h>
#include <stdlib.h>
int input_int(void) {
int ival;
ival = 0;
printf("数字を入力:");
// int型の数値をキーボードから入力し、ivalに格納する
scanf("%d", &ival);
// int型の数値を返す
return ival;
}
void main() {
int inum;
// input_int関数を呼び出して、キーボードから入力した数値をinumに格納する
inum = input_int();
printf("入力した数字は %d\n", inum);
}
--------------
これは、数字を入力する関数を呼び出して、戻り値として入力した値を受け取るサンプルです。
何かの足しにできるかと。
では、がんばってください。
- 違反報告
- 編集日時:2012/2/15 11:02:10
- 回答日時:2012/2/15 10:55:20
- この質問・回答は役に立ちましたか?
- 役に立った!
お役立ち度:
0人が役に立つと評価しています。


質問した人からのコメント