あなたは機能のsprintf
家族を探しています。彼らの一般的な形式は次のとおりです。
char output[80];
sprintf(output, "No record with name %s found\n", inputString);
しかし、それだけでsprintf
は極めて危険です。これは、バッファオーバーランと呼ばれるものになりがちです。これは、sprintfがあなたが提供する文字列がどれくらい大きいかわからないことを意味します。したがって、利用可能な文字列よりも多くのデータを喜んで書くでしょう。たとえば、これはきれいにコンパイルされますが、有効なメモリ—を上書きしてsprintf
が、それは間違って何をやっていることを知らせる方法がないでしょう。
char output[10];
sprintf(output, "%s", "This string is too long");
ソリューションは、長さをとる、snprintf
としての機能を使用することですパラメータ:
char output[10];
snprintf(output, sizeof output, "%s", "This string is too long, but will be truncated");
か、Windowsシステムにしている場合、いずれかの入力または出力文字列の溢れから保護_sntprintf
変種や友人を、使用します。
が自分に好意を行います&買いに行くKernigham&リッチーによる「プログラミング言語C」を見つけると確信しています。 – Pete
おかげでPete、そうです。 – itsaboutcode
http://www.eskimo.com/~scs/cclass/cclass.html –