dポイントプレゼントキャンペーン実施中!

%dは桁数を指定していないので、1桁目からスペースまたは改行までの数字列を整数に変換することを意味しています。の1桁目からスペースまたは改行までの数字列とはどういう事でしょうか?教えていただけると嬉しいです。

A 回答 (5件)

>1桁目からスペースまたは改行までの数字列


まことしやかに書かれていますが、大嘘です

変換ができなくなるまでの文字列であって、
スペースや改行に限りません。
また、先頭の+や-も変換対象なので数字列だけではありません。

こういうバグは、早めに潰しておきましょう。
    • good
    • 0

#include <stdio.h>



int main(void){
int a = 999;
sscanf("111 222 333\n", "%d", &a);
printf("%d\n", a);

a = 999;
sscanf("111\n222 333\n", "%d", &a);
printf("%d\n", a);

a = 999;
sscanf("abc111 222 333\n", "%d", &a);
printf("%d\n", a);

a = 999;
sscanf("111abc222 333\n", "%d", &a);
printf("%d\n", a);

return 0;
}

の実行結果は

111
111
999
111
    • good
    • 0
この回答へのお礼

すみません。もう少し分かりやすく教えていただけると嬉しいです。

お礼日時:2023/07/19 09:34

>何故、111に変換されるのでしょうか?


そういう仕様(定義)だから。
    • good
    • 1

スペースまたは改行を含む文字列の事です。



"111 222 333\n" は 111 に変換される。
    • good
    • 0
この回答へのお礼

何故、111に変換されるのでしょうか?後、数字列なのですが。教えていただけると嬉しいです。

お礼日時:2023/07/18 23:21

123 456 とかなら123になるよってこと。

    • good
    • 0
この回答へのお礼

何故そうなるのでしょうか?教えていただけると嬉しいです。

お礼日時:2023/07/18 23:21

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!