1

これが私の練習コードです:

int integer_part;

char* string_part = (char*)malloc(sizeof(1000));

char* input_string = (char*)malloc(sizeof(1000)+sizeof(int));

cin>>input_string;

sscanf(input_string, "%s %d", string_part, &integer_part);

printf("scan: %s %d", string_part, integer_part);

このコードを使用して入力を受け取りますabc 2012が、結果は次のようになりますabc 0

悲しいことに、問題がどこにあるのかわかりませんでした。誰かがこれを少し手伝ってくれますか?ありがとうございました

4

2 に答える 2

4

これは、スペースで区切られた最初の文字列のみを読み取ります。

cin>>input_string;

次のように使用します。

cin>> string_part >> integer_part;

ストリームから読み取る C++ と C の方法を混在させないでください。

この方法を使用して、スペースで区切られていない文字列を読み取ることができます。

cin.read ( input_string, sizeof(1000)+sizeof(int) - 1);
size_t read_Len = cin.gcount();
input_string[read_Len] = '\0';

scanf特定の形式でデータを読み取る 力が必要であることは理解できます。

于 2012-09-20T18:43:39.343 に答える
0

を悪用してsizeofいます。1,000 文字のスペースが必要な場合は、1,000 自体のサイズは必要ありません。文字のサイズの 1,000 倍が必要です。使用できます1000 * sizeof(char)sizeofは文字を返すため (したがって1sizeof(char)である必要があります)、そのまま使用できます1000

于 2012-09-20T18:41:39.820 に答える