アカウント名:
パスワード:
printf(some_string_text); は、 printf("%s", some_string_text); としなさいというのがあり、目から鱗が落ちました。
fputs(some_string_text, stdout);
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
Stableって古いって意味だっけ? -- Debian初級
分量がすごそうなんですけど… (スコア:1)
Re:分量がすごそうなんですけど… (スコア:0)
ざっと目を通しましたが、やっぱり、C/C++プログラマとして、
文字列処理系の問題は頭が痛いなぁと思いました。
最後の方に、
printf(some_string_text);
は、
printf("%s", some_string_text);
としなさいというのがあり、目から鱗が
Re:分量がすごそうなんですけど… (スコア:2, 参考になる)
fputs(some_string_text, stdout);
にせよ、と教えてるんですけど... (セキュリティ以前の問題で)。Re:分量がすごそうなんですけど… (スコア:1)
Re:分量がすごそうなんですけど… (スコア:0)
printf("%s", some_string_text);
と
fputs(some_string_text, stdout);
ではどのように動作が異なるのですか?
Re:分量がすごそうなんですけど… (スコア:2, 参考になる)
1.成功時の戻り値の仕様
printf:転送された文字数を返す。
fputs: 非負の値を返す。
2.エラー時の戻り値の仕様
printf:出力エラーが発生したときは、負の値を返す。
fputs:書込みエラーが発生するとEOFを返す。
3.変更、拡張への対応
"%s"を前提としている場合でも、
Re:分量がすごそうなんですけど… (スコア:0)
> "%s"を前提としている場合でも、printfでは"%10s"のよう
> な文字数指定への拡張が可能です。
それがどのように関係しているのか分かりません。
/*a*/ printf("%s", some_string_text);
/*b*/ fputs(some_string_text, stdout);
/*c*/ printf("%10s", some_string_text);
# aとbは同じ動作ですが、cは異なる動作となります。
「aとbの動作の違いは?」という質問がでている状況です。
aならばcのように変更可能だと言うのでしたら
bだっておなじくcのように変更可能です。