3

次のコード行でsscanfを使用して、char *文字列から日付形式(dd-mm-yyyy;)を読み取る必要があります。

sscanf(string, "%[^-]-%[^-]-%[^;];", day, month, year)

ここで、日/月/年は、それぞれ3/3/5要素のchar*文字列です。

このように機能しますが、日/蛾/年をinteger変数として(同じで)使用しようとすると、それらを使用すると値sscanfが得られます。に変更した場合0 0 0printfsscanf

sscanf(string, "%d-%d-%d;", day, month, year)

私は得segmentation faultた。

誰でも私を助けることができますか?K&Rの本を使って、私は解決策を見つけられませんでした。

4

1 に答える 1

8

int変数のアドレスを渡す必要があります。

int day, month, year;
sscanf(string, "%d-%d-%d;", &day, &month, &year);

sscanf()day行われた割り当ての数を返します。使用する前に戻り値を確認することをお勧めしmonthますyear

if (3 == sscanf(string, "%d-%d-%d;", &day, &month, &year))
{
}
于 2012-08-22T10:43:19.427 に答える