char* str = "2006/3/18";
int y=0, m=0, d=0;
(つまり、文字列を解析して、y,m,dにそれぞれ2006,3,18を代入するプログラム)
というのが与えられたとして、おまいら、どう解析する?

A.最初から1文字ずつ読んで、y,m,dに入れてく?
char* p = str;
int* tmp = &y; //現在の状態を「年」に設定
while (*p) {
if (*p>='0' && *p<='9') { *tmp = *tmp * 10 + (*p-'0'); } //数字
else if (tmp==&y) tmp = &m; //区切り文字で年→月に遷移
else if (tmp==&m) tmp = &d; //区切り文字で月→日に遷移
p++;
}
B.それとも次のように、二重ループで読んでいく?
char* p = str;
int* tmp = &y; //現在の状態を「年」に設定
while (*p) {
while (*p>='0' && *p<='9') { *tmp = *tmp * 10 + (*p-'0'); p++; } //二重ループ
if (tmp==&y) tmp = &m; //区切り文字で年→月に遷移
else if (tmp==&m) tmp = &d; //区切り文字で月→日に遷移
p++;
}

>>504のようなプログラム、おいら、Aにしようか、Bにしようか、
いつも迷ってしょうがないんだけど、どっちにすべき?