strtokのかわりの関数

[戻る]
イリシャ 2006/07/04(火) 14:25:00
VC7のMFCアプリを作っています。
strtokでカンマ区切りの数値を分割しようとしましたところ
カンマが連続した場合(例:1,2,,4,5)に順番が飛ばされます。
分割した値はint val[5]の各位置にセットします。

理想はこうです。
val[0]=1;
val[1]=2;
val[2]=0;
val[3]=4;
val[4]=5;

でもこうなります。
val[0]=1;
val[1]=2;
val[2]=4;
val[3]=5;
val[4]=0;

理想どおりの結果になる関数はありますか?

επιστημη 2006/07/04(火) 15:20:14
ありません。作りましょう。

Ban 2006/07/04(火) 16:05:34
書いたコードは?

chu- 2006/07/05(水) 16:17:11
工夫すれば使えないこともないでしょう。
strtolのようにstrtokにもendptrがあると便利なのに。

/*
>lcc test

>test
1030067
>
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void)
{
    char str[] = "1,,3,,,6,7";
    long val = 0;
    char *p;

    for ( p = strtok(str, ","); p != NULL; p = strtok(NULL, ",") ) {
        val = val * 10 + atol(p);
        for ( p += strlen(p) + 1; *p == ','; p++ ) {
            val *= 10;
        }
    }

    printf("%ld", val);

    return 0;
}

古いスレッドには追加発言できません。