

以下のプログラム中の`sprintf`はどのような働きでしょうか？

[code]

    if(p >= 10000 ){
        sprintf(str,"D:\\○○研_生産情報特別実験_中山_引継ぎ\\System\\Final\\講義中の教師の動作の推定と記録を行うシステム\\OpenCV-Sample001\\講義画像\\cap%05d.bmp",p);
    }else{
        sprintf(str,"D:\\○○研_生産情報特別実験_中山_引継ぎ\\System\\Final\\講義中の教師の動作の推定と記録を行うシステム\\OpenCV-Sample001\\講義画像\\cap%04d.bmp",p);
    }
    
[/code]


CC BY-SA 4.0
2018-11-14T03:30:46.263
50308
2018-12-06T03:15:29.710
2018-12-06T03:15:29.710
3060
30982
question
c++ c
sprintf とは何か


([opencv](/questions/tagged/opencv "'opencv' のタグが付いた質問を表示") かつ [visual-
studio](/questions/tagged/visual-studio "'visual-studio' のタグが付いた質問を表示") だと言語は
[c](/questions/tagged/c "'c' のタグが付いた質問を表示") または
[c++](/questions/tagged/c%2b%2b "'c++' のタグが付いた質問を表示") とみなせそう)  
[c](/questions/tagged/c "'c' のタグが付いた質問を表示") の `sprintf` は `char`
の配列に書式展開した文字列を出力する関数です。  
<https://msdn.microsoft.com/ja-jp/library/ybk95axf.aspx> (機械翻訳)  
<https://linuxjm.osdn.jp/html/LDP_man-pages/man3/printf.3.html>  
(こっちのほうが読みやすいはず)

提示コード中の `str` は `char str[_MAX_PATH];` のように定義されている `char` の配列であるはずです。  
`sprintf` はそこに
`D:\○○研_生産情報特別実験_中山_引継ぎ\System\Final\講義中の教師の動作の推定と記録を行うシステム\OpenCV-
Sample001\講義画像\cap12345.bmp` のように文字列を書式展開して（この例では `%d`
が対応する数値を表記する複数文字に展開される）保存します。  
ソースコード中のバックスラッシュはコンパイル時にエスケープ展開されることに注意。


CC BY-SA 4.0
2018-11-14T05:07:29.137
50309
2018-11-14T05:07:29.137
8589
50308
answer


774RRさんがすでに詳細に回答されていますが、初心者向けの説明をすると

「変数に格納されている値、文字列なども組み合わせて、新しい文字列を作成する」

という用途でよく使用します。


CC BY-SA 4.0
2018-11-15T07:09:41.610
50351
2018-11-15T07:09:41.610
9515
50308
answer