私は次のデータを持っています:
10:15:14 D
00:15:14 T
00:15:14 G
および7つの変数:
int h1,h2,m1,m2,s1,s2;
char mark;
データの最初の行の出力は次のようになります。
h1==1
h2==0
m1==1
m2==5
s1==1
s2==4
mark=='D'
":"
使用中に無視する方法はscanf()
?
私は次のデータを持っています:
10:15:14 D
00:15:14 T
00:15:14 G
および7つの変数:
int h1,h2,m1,m2,s1,s2;
char mark;
データの最初の行の出力は次のようになります。
h1==1
h2==0
m1==1
m2==5
s1==1
s2==4
mark=='D'
":"
使用中に無視する方法はscanf()
?
あなたはそれを次のようにすることができます
int h1,h2,m1,m2,s1,s2;
h1 = h2 = m1 = m2 = s1 = s2 = 0;
char mark;
if (scanf("%1d%1d:%1d%1d:%1d%1d %c", &h1, &h2, &m1, &m2, &s1, &s2, &mark) != 7)
{
//some error handling
}
次のように、時間、分、秒ではなく、数字に異なる変数を使用するのは実に奇妙です。
scanf("%d:%d:%d %c", &h, &m, &s, &mark);
cstdio は時代遅れであるとコメントしている人のために、個人的には cstdio よりも気に入っていますiostream
。
ドキュメントを読むと、次のように簡単であることがわかります
int h, m, s;
char mark;
const char* buf = "00:15:14 D";
sscanf(buf, "%d:%d:%d %c", &h, &m, &s, &mark);
fprintf(stdout, "h = %d, m = %d, s = %d, mark = %c\n", h, m, s, mark);
ごみ箱変数を使用して、「:」部分を %c でスキャンできます
scanf("%1d%1d%c%1d%1d%c%1d%1d", &h1, &h2, &trash, &m1, &m2, &trash, &s1, &s2);
しかし、scanf を使用せず、より堅牢な入力パーサーを使用することにも投票します (使用しているコンテキストによって異なります)。