• ベストアンサー

数字のINPUT

Trick--x--の回答

回答No.12

1.数字を入力させる 2.入力をヌルで終わる文字列(C言語で言う「文字列」)に入れる 3.strtok()で切り出す 4.atoi()で数値に変える 5.配列に代入する 以上!!

miniture_min
質問者

お礼

ありがとうございます。お手数を掛けました。

関連するQ&A

  • c言語 int型の数字をchar型の配列に

    c言語についてです。 int型の数字をchar型の配列に入れたいです。 関数に対してint型の数字を文字列として渡し、 関数内でchar型の配列に格納したいです。 例として、 a(char a[]){  ~~  ~~ } int main(void){ int x = 5678;  ~~  a(x); } とできるようにしたいです。 しかしこれだと5678という値がそのままchar型の一つの配列に入る?ため正しくないです。 欲しい結果としてはちゃんとa関数内で、 a[1] = '5' a[2] = '6' a[3] = '7' a[4] = '8' となってほしいです。 もともと渡す値が”5678”となっていれば結果は正しく出るのですが、 渡す値がint型と決まっているためどうにかして5678を”5678”とすればいいのではないかと考えています。 つまり5678を単純に文字列に変換すればいいのでしょうか? またプログラム内ではsprintfやatolを使用しないで実現させたいです。 難しいかもしれませんがお願いします。 なんだか説明が下手ですみません。 お願いいたします。

  • 数字の入った配列をファイルへ出力。

    今、hist[256]というint型の配列に数字が入っているとします。 これを、テキストファイルに出力して、 0 242 5654 232 3123 756 ・ ・ ・ こんな感じで、ファイルに出力したいです。 文字としての出力になるのでhist[256]配列を、int型からchar型に変換しないとダメでしょうか? また、変換するとしたら、char型だと unsigned char にしても 0~256の値までしか1つの配列に保存できませんよね? もっと大きい数字も入っているので何とかする方法も教えて下さい。 初歩的な質問で申し訳ありませんが、よろしくお願いします。

  • プログラミング時の警告(キャスト)について

    こんにちは。 C言語についての質問です。 char型の数字の配列を、int型の数字の配列に変えてから関数に飛ばしたいと思い atoi関数を使おうとしたのですが、下記のように書くと char array[20]; hogehoge(atoi(array)); pointer from integer without a castと警告になります。 ここで、 char array[20]; int copy[20]; copy[20] = atoi(array); hogehoge(copy); と書くと警告は無くなりました。 最初の書き方だと何がいけないのでしょうか? よろしくお願いします。

  • C++流入力の妥当性チェック方法

    お世話になります。 C言語の入門書には、scanfを使って数字を入力させる時は、一旦文字列に入力させ、atoiを使って数値に変換すると良いと書いてありました。 #include "stdafx.h" #include "iostream" #include "cstring" #include "string" using namespace std; int _tmain(int argc, _TCHAR* argv[]) { int num=0; // char tmp[20]; string tmp; num=atoi(gets(tmp)); cout << num; return 0; Cの本にかいてある物をC++っぽく書いてみたつもりです。 しかしこれではchar tmp[20]を使ったとき、入力した文字列が数字以外の時はnum=0になってしまい、入力として0を与えたのか入力エラーなのか判定できません。 また、tmp[20]としているので、20文字以上入力された場合、実行エラーが発生してしまいます。 そこで、string tmpとしてやることで、入力される文字数を考えることなくプログラミングできるようにすればいいじゃないかと考えたのですが、atoiはcharにしか対応していないので、stringでは使えません。 stringを使って入力される文字数問題を考えることなく、また、数字以外の入力を受け付けないようにするスマートな方法はないのでしょうか?

  • c言語のポインタへの文字列入力についてです。

    当方c言語初学者なのですがscanfを使ってポインタに文字列を入力したいのですがバグが発生して進みません・・・どういうことなのでしょうか? #include <stdio.h> int main(void) { char *a; scanf("%s", a); printf("%s", a); return (0); } *aをa[128]; のように配列に変えるとうまくいくことはなんとかわかるのですが・・・助けてください(^_^;)

  • 配列型の数字データをint型に変える方法

    こんばんは。 C言語を勉強しているのですが、わからない事が有り投稿しました。 atoi関数と同じような関数を作ろうとして、配列の中の 数字を取り出し、関数内の別配列に収めたのですが、これをint型としてmainに戻す場合どのようにして型変換をしたらよいのかわかりません。 (取り出した数字の並びはそのままで) 何か方法をご存知の方がいましたら、回答をお願いします。

  • 数字を入力して配列に格納するプログラムを書きたいです。

    各行任意個の数字をスペースで区切って入力し、格納する数字は10個までとします。また、/の入力以降は数字を格納せず、プログラムを終了するようにしたいです。 PrintNumは配列に格納された数字を順番に印字する関数として、次のプログラムを書くと、数字を入力するとき、2行目を入力しようとするとエラーになってしまいます。 char line[50]; char *ptr; int count=0; int numbers[50]; while(*ptr!='/'){ fgets(line,50,stdin); ptr = strtok(line," "); if(ptr!=NULL && *ptr!='/') numbers[count++]=atoi(ptr); if(count>=10){ PrintNum(numbers,count); return 0; } while(ptr!=NULL && *ptr!='/'){ ptr=strtok(NULL," "); if(ptr!=NULL && *ptr!='/') numbers[count++]=atoi(ptr); if(count>=10){ PrintNum(numbers,count); return 0; } } } PrintNum(numbers,count); return 0; 最初のwhile文でたとえば while(1) とすると2行目以降も入力できることがわかったのですが、上のプログラムは何がまずいのかわかりません。教えていただけると幸いです。

  • int型変数をchar型変数に格納する方法

    int型数値をchar型変数に格納したいのですが、 sprintf()とatoi()を用いてやりましたが、 うまくいきません。 考えたコードを下記します。 int get_y(){ int y=2005; return y; } int main(){ char year; char str[5]; //intをcharに変換して格納している sprintf(str,"%d",get_y()); //数値として代入 year=atoi(str); //yearには2005が格納されていない! cout<<year<<endl; char ans; //このchar型変数に数値を代入する。 ans=year; cout<<ans<<endl; return 0; } お手数をお掛けしますが、 よろしくお願い致します。

  • 文字を整数(int)に変換

    char型の数字文字を、int型に変換したいのですが、どんな方法があるでしょうか? 具体的には、 char s[6] = "12345"; int line[5]; のようなchar配列の文字を、int型のline配列に移したいのです。(line[0]=1,line[1]=2,...,line[4]=5となるように。) "文字 int 変換"などで検索でも調べたのですが、 int→文字のsprintfしか見つかりませんでした。 感覚的にはこの逆のような操作をしたいです。 何か関数を用いる方法でも、そうでない方法でもよいので、 教えてください。よろしくお願いします。

  • 数値を文字化するにはどうすればいいですか。

    こんにちわ, 今Cで int* a[10]; a[1] =15; となっているときにこの数値をchar型の文字「15」に変換するにはどうすればいいでしょうか。 いわばatoi()の逆バージョンの方法をしりたいのです。 よろしくお願いします。