ここから本文です

解決済みの質問

C言語についての質問です

clanguagebuntokuさん

C言語についての質問です

先に投稿した質問は書き洩らしが多かったので再度質問しています。
学校の課題でプログラムを作って提出しなければならないのですが、難しすぎてわかりません。

次のプログラムを作らないといけません。

1、文字列を入力し、char型配列に格納し、配列内の数字をint型に変換するプログラム[convert_a2i]を作成する。
入力した文字に数字以外の文字があった場合には、それまでに変換した値を変換結果とする。
→自分はatoiを使って型変換をするものだと思っていますが、書き方がわかりませんでした

2、int型のデータを入力し、一桁ごとに文字型配列に格納するプログラム[convert_i2a]を作成する。
int型以外の文字が入力された場合は、「0」を変換結果とする。
→こちらはitoaを使って型変換をするものだと思いましたが、これも書き方がわかりませんでした

3、上の1と2をまとめる[henkan]を作成し、一つのプログラム[convert]として作成し、両方の機能が実行できるようにする。

これらの3つのプログラム内のどこかで、関数、ポインタ、構造体を何らかの形で使うこと。

この質問は、活躍中のチエリアンに回答をリクエストしました。

違反報告

ベストアンサーに選ばれた回答

hahoojapan2012さん

前回の質問をみました。
自分で作ったソースがあるなら、今回も質問に書いていればよかったのに。
まるっきり答えを聞くより、ある程度作ったけどどこが間違っていますか?のほうが回答がつきやすいですよ。

(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

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

  • 爆笑おかげで課題が提出できました!ありがとうございます!
  • コメント日時:2012/2/16 10:39:27

グレード

この質問・回答は役に立ちましたか?
役に立った!

お役立ち度:お役立ち度 0点(5点満点中)0人が役に立つと評価しています。

知恵ノートとは?

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。

お客様自身の責任と判断で、ご利用ください。

話題のキーワード

[カテゴリ:C言語関連]

ただいまの回答者

01時38分現在

2369
人が回答!!

1時間以内に4,316件の回答が寄せられています。

>>回答ひろばに行く


知恵コレに追加する

閉じる

知恵コレクションをするID/ニックネームを選択し、「追加する」ボタンを押してください。
※知恵コレクションに追加された質問や知恵ノートは選択されたID/ニックネームのMy知恵袋で確認できます。

ほかのID/ニックネームで利用登録する