質問: int main() { char str[100]; int num; printf("文字列を入力してください。\n"); scanf_s("%s",str); for(num=0;str[num]!='\0';num++) {} printf("文字数は%dです。\n", num); return 0; } という、簡単な文字数を測るプログラミングをしました。 ですが、 'scanf_s': not enough arguments passed for format string. と「引数が足りない」という、おそらくそういう意味の文が出てきます。 自分なりに引数というのを調べてみたのですが分かりません。 このプログラミングでどこを修正すれば良いかと、できれば引数とは何かを教えていただきたいです。
回答: こんにちは。 scanf_s()はscanf()と微妙にパラメータの与え方が異なります。 "%s"に対しては、バッファとバッファのサイズ(文字単位)を指定する必要が有ります。 > > scanf_s("%s",str, sizeof(str)/sizeof(str[0])); > > > とすれば良い筈です。(実は使ったことはないので外していたらごめんなさい。) `sizeof(str)/sizeof(str[0])`はちょっと冗長です。が「文字数」であることを強調するためにこのようにしてみました。 お使いのソースでは該当しませんが、1文字が2バイトのような場合もあるからです。