• ベストアンサー

ポインタを使用 [数字列を数値に変換]

yama5140の回答

  • yama5140
  • ベストアンサー率54% (136/250)
回答No.3

>ポインタを使って 数値に変換したいのですが、わかりません。  課題ならば、int main() + return( 0 ); に変えてください。 #include <stdio.h> #include <stdlib.h> void main() {  char data[ 32 ] = "54321,4321,321,21,1";  char *p = data;  int iVal;  while( *p ){   iVal = atoi( p ); // , の手前まで   printf( "%d\n", iVal );   while( *p && ( ',' != *p ) ) p++;   if( '\0' == *p ) break; // 終了   p++; // , の次(数字の先頭)  } } 注:インデントに全角空白を用いています。コピペ後、タブに一括変換して下さい。

prg_test
質問者

お礼

ソースありがとうございました。 atoi という文法を初めて知りました。 とても便利ですね。 まだ習っていない文法ですので、使ったらあかん言われました。 '-0' で数値化をしてそれを繰り返すのかと思っていますが、桁の計算をどうすればいいのかわかりせん。

関連するQ&A

  • カンマ区切りの数値文字列を数値に変換

    JSPで数値を入力して、データベースへ更新するプログラムを作成しています。 入力はカンマありでもなしでも通すようにしたいと思っています。 しかも、カンマの位置は特にチェックせずにしたいのです。 ちゃんとしたカンマ区切り数値なら、NumberFormatで数値変換できますよね? データベースの数値を表示する際にもカンマ区切り数値にしますので、1桁目を削除した場合には、カンマの位置が違ってきますよね。 そのためにカンマの位置は意識しないでいきたいのです。 StringTokenizer という便利なクラスがあったので使用してみたのですが、インスタンスを生成した後、トークン分をループで回して文字列を連結する必要がありますよね。 もっとスマートに一発で変換できないでしょうか? 「ある文字列からデリミタを省いた文字列を返すメソッド」みたいな。 よろしくお願いします。

  • 数値→文字列変換関数

    ・数値を文字列化する関数StoAを作成する。 書式:char *StoA(short nVal); 引数:short nVal; 文字列化する数値 戻り値:数字文字列のポインタ 処理:nValで与えられたshort型の数値を文字列に変換し、そのポインタを返す。 呼び出し側の書式は以下の通り。 void main(void) { char *pc; pc = StoA(123); printf("%s\n", pc); pc = StoA(-1234); printf("%s\n", pc); } です。明日までの専門学校の課題なのでどうか、どなたか助けて下さい。

  • PHPでカンマ区切り文字列を数値に変換するには

    PHPでカンマ区切り文字列を数値に変換するにはどうすればいいのでしょうか。 例)$a="12201,11912"が文字列を認識されるのですが数値認識させたいです。 以上よろしくお願いします。

    • ベストアンサー
    • PHP
  • 数値→文字列変換関数

    ・数値を文字列化する関数StoAを作成する。 書式:char *StoA(short nVal); 引数:short nVal; 文字列化する数値 戻り値:数字文字列のポインタ 処理:nValで与えられたshort型の数値を文字列に変換し、そのポインタを返す。 呼び出し側の書式は以下の通り。 void main(void) { char *pc; pc = StoA(123); printf("%s\n", pc); pc = StoA(-1234); printf("%s\n", pc); } です。自分で途中までしたので見てください。 #include <stdio.h> cahr *StoA(short nVal); void main(void) { char *pc; pc = StoA(123); printf("%s\n", pc); pc = StoA(-1234); printf("%s\n", pc); } char *StoA(short nVal) { ここからがわかりません。どなたか助けて下さい。

  • カンマの含まれる文字列の数値変換方法について

    VB.NETでプログラミングしています。 String型の文字列を Double型の数値に変換するときに 一般的にはVal関数を使いますが、 カンマが含まれる文字列"111,111"を 数値変換したい場合には単純にVal関数を 使用しただけではうまくいかないようです。 上の例で数値変換すると"111"になってしまうようです。 そこで質問なのですが、 何か簡単にできるうまい方法はないでしょうか? 関数があればご教示ください。 以下、Val関数の説明の抜粋です。 解説 文字列中に数字以外の文字が見つかると、Val 関数は読み込みを中止します。円記号 (\) やカンマ (,) など、通常は数値の一部と見なされる記号や文字も、Val 関数は数値として解釈しません。

  • UNIXで数字の文字列を、数値に変換するには?

    UNIXで、数字のみの文字列を、その文字列で表される数値に変換して変数に代入したいのですが、どうすればいいでしょうか? つまり、 VALUE=`echo 22j4444j33 | awk -F'j' '{print $1}'` <VALUEに入った"22"を22の数値に変換> exit $VALUE というようなことがしたいです。 よろしくお願いします。

  • 文字列を数字に変換

    カンマで区切られた単語が縦に並んでいます。 その単語だけをコード表にそって数字に変換したいのですが・・・。 <コード表> A列  B列 1    バラエティ 2    ドラマ 3    ニュース 4    スポーツニュース <変換前>              <変換後> ニュース,スポーツニュース      3,4 ニュース                  3 バラエティ,ドラマ,ニュース       1,2,3 というように変換したいです。 単語が30種類、データが1000くらいありますので、 できれば一括で変換したいです。 何卒よろしくお願いいたします。 エクセル2002です。

  • 文字列が数値に変換されない

    文字列の数字をVALUE関数で数値に変換したくても数値になりません。 ♯N/Aと表示されるだけです。 関数を入れたあとに表示形式を数値にしても変わりません。 元の文字列はVLOOKUP関数で検索した数字です。 これができないと仕事が進みません。急いでます。お願いします。

  • 数字を数値に変換

    scanf()で数字(文字列)を入力し、それをdataという場所に16進数(数値)で格納したいのです。 例えば、 scanfで「3b」と入力したら、dataには、「0x3b」が格納されているようにしたいのですが、どのようにしたらいいのか教えてください。よろしくお願いします。

  • access2000 クエリで文字列を数値に変換

    access2000 クエリで文字列を数値に変換 商品の管理DBをaccessで入力し、テーブルをexcelにエクスポートして並び替えやその他の編集をしています。 テーブルに「数量」というフィールドがあり、数字入力が主ですが、商品によっては「無制限」や「-」のように文字列を入力しなければならない為、「数量」は「数値型」ではなく「テキスト型」になっています。 excelへエクスポートした時に、「10」などは数値として認識させ、「無制限」などはそのままの文字列にしたいです。 クエリの式に「Val([数量])」としてみたところ、「10」は数値として変換されましたが、数値ではない文字列は全て「0」になりました。 また、「15,000」は「15」になりました。(カンマが文字列な為) これを 「10」→「10」(数値) 「無制限」→「無制限」(文字列) 「15,000」→「15000」(数値) にするような関数はありませんでしょうか。 excel2007のエラー処理(セルを選択した時に出る「!」で「数値に変換する」)と同じような挙動にしたいです。 宜しくお願いします。