C言語で,String配列として入っているカンマ区切りの数値列から,それぞれの値をint変数に取り出したいのですが,どのような方法が一番スピーディーでしょうか.

回答の条件
  • 1人3回まで
  • 登録:2007/04/19 15:01:11
  • 終了:2007/04/26 15:05:03

回答(3件)

id:blatt No.1

blatt回答回数11ベストアンサー獲得回数12007/04/19 20:08:15

ポイント60pt

私もあまり自信ないです。

ソースをさらすのもなんですが、即興で考えるとこんな感じか?

/*
strは問題の文字列
valueはint配列へのポインタ
*/
int str_to_int(char *str, int *value)
{
    char	*ptok;

    ptok = strtok(str, ",");
    while(ptok){
        *value = atoi(ptok);
        value++;
        ptok = strtok(NULL, ",");
    }

    return 0;
}

こんな感じかな。あらかじめ個数が決まっていないとvalueの配列を確保できないけど・・・その時はカンマをカウントして・・・みたいな。

http://m--takahashi.com/bbs/pastlog/10500/10480.html

id:pi8027 No.2

pi8027回答回数4ベストアンサー獲得回数02007/04/22 02:49:52

ポイント10pt

int str_to_int(char *str, int *value){

 while(1){

  int result = 0;

  while(*str != ','){

   if(*str >= '0' && *str <= '9'){

    result = result * 10 + *str - '0';

   }

   else if(*str == '\0'){

    return 0;

   }

   else{

    return -1;

   }

   str++;

  }

  *value = result;

  value = value + sizeof(int);

 }

}

多分こんな感じになると思います(動かしていないので間違っているかも知れませんが)。何でも関数に頼れば良いという物でもありません。

質問者が未読の回答一覧

 回答者回答受取ベストアンサー回答時間
1 ardarim 897 806 145 2007-04-20 01:17:55
  • id:KazyN
    あんまり自信ないからコメントで。

    strtok() で切り出して、あとは atoi() で数値変換ってのでどうでしょう?
    http://www9.plala.or.jp/sgwr-t/lib/strtok.html

    あんまり手早くないか?

  • id:castiron
    valueの確保すべき数は
    strlen(str)/2+1
    にしておけば良いんじゃない?

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません