通知
すべてクリア
Topic starter
2006年7月4日 2:25 PM
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年7月4日 3:20 PM
ありません。作りましょう。
2006年7月4日 4:05 PM
書いたコードは?
2006年7月5日 4:17 PM
工夫すれば使えないこともないでしょう。
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;
}