ITメモ
C言語 / Programming Language C
開発環境 / Development Environment
【Mac】Xcode【Win】Visual Stadio
基礎 / Basic
About C言語書式コンパイルとリンクメイクファイル / Makefileヘッダファイル変数定数型 / Type配列 / Arrayポインタ / Pointer演算子 / Operator制御文 / Control Statement関数構造体と共用体 / Structure & Unionプリプロセッサ / PreprocessorthisキーワードTypedef
文字列 / String
文字列 / Stringsnprintf - 文字列書式に従って指定文字数分だけ文字配列に書き込む
ネットワーク / Network
memset - メモリブロックのセット
メモリー管理
メモリー
入出力 / Input & Output
入出力入力フォーマット指定子出力フォーマット指定子
オペレーション / Operation
ファイル操作 / File Operationコマンドラインプログラム / Command-Line Programプロセス / Processソケット通信 / Socket Communication
用語集 / Glossary
サブルーチン / Subroutineスタックとキュー / Stack & Cueスレッド / Thread
C言語標準ライブラリ(ヘッダファイル)
C言語標準ライブラリC言語標準ライブラリ【assert.h】 - 診断機能C言語標準ライブラリ【complex.h】 - 複素数計算C言語標準ライブラリ【ctype.h】 - 文字操作C言語標準ライブラリ【errno.h】 - エラーC言語標準ライブラリ【fenv.h】 - 浮動小数点環境C言語標準ライブラリ【float.h】 - 浮動小数点型の特性C言語標準ライブラリ【inttypes.h】 - 整数型の書式の変換C言語標準ライブラリ【iso646.h】 - 代替つづり(Alternate spellings)C言語標準ライブラリ【limits.h】 - 整数型の大きさC言語標準ライブラリ【locale.h】 - 文化圏固有操作C言語標準ライブラリ【math.h】 - 数学C言語標準ライブラリ【setjmp.h】 - 非局所分岐C言語標準ライブラリ【signal.h】 - シグナル操作C言語標準ライブラリ【stdalign.h】 - アライメントC言語標準ライブラリ【stdarg.h】 - 可変個数の実引数C言語標準ライブラリ【stdatomic.h】 - アトミック操作C言語標準ライブラリ【stdbool.h】 - 論理型および論理値C言語標準ライブラリ【stddef.h】 - 共通の定義C言語標準ライブラリ【stdint.h】 - 整数型C言語標準ライブラリ【stdio.h】 - 入出力C言語標準ライブラリ【stdlib.h】 - 一般ユーティリティC言語標準ライブラリ【stdnoreturn.h】 - _NoreturnC言語標準ライブラリ【string.h】 - 文字列操作C言語標準ライブラリ【tgmath.h】 - 型総称数学関数(Type-generic math)C言語標準ライブラリ【threads.h】 - マルチスレッドC言語標準ライブラリ【time.h】 - 日付及び時間C言語標準ライブラリ【uchar.h】 - UnicodeユーティリティC言語標準ライブラリ【wchar.h】 - 多バイトおよびワイド文字拡張ユーティリティC言語標準ライブラリ【wctype.h】 - ワイド文字種分類およびワイド文字大文字小文字変換ユーティリティ
C言語ライブラリ(ヘッダファイル)
C言語ヘッダファイル【winsock.h】





snprintf - 文字列書式に従って指定文字数分だけ文字配列に書き込む




snprintfとは


snprintf

文字列書式に従って指定文字数分だけ文字配列に書き込む。





構文


#include <stdio.h>
int snprintf(
char * restrict s,
size_t n,
const char * restrict format,
...
);


引数
  • s: 文字配列 (書き込まれる配列)
  • n: 書き込む文字数
  • format: 書式文字列 (printf の書式文字列を参照)


戻り値
  • 成功した場合: 書き込んだ文字数 (終端ナル文字は含ない)
  • 失敗した場合: 負の値
※ 戻り値が負の値でなく n(書き込みも字数)未満の場合に完全に書き込まれたといえます.


snprintf 関数は format が指す書式文字列に従って s が指す文字配列へ書き込みを行う。
書き込まれた文字配列の最後にはナル文字 ('\0') が書き込まれる。
引数の「n」で指定された書き込み文字数をオーバーした分は、書き込まれず破棄される。
引数 n に「0」を指定した場合は、「snprintf」には、何も書き込みされない。その時は、引数「s」に、「空ポインタ (NULL)」を指定してもOK。



サンプルプログラム
//ヘッダファイル
#include <stdio.h>
#include <stdlib.h>



//マクロ
#define StringNum 256

//プログラムコード
int main(void) {
char sampleArray[StringNum] = {'\0'};
char name[] = "サンプルネーム";
char address[] = "東京";
int age = 4;

snprintf(sampleArray, StringNum, "%sさんは、%sに%d年間住んでいます。", name, address, age);

printf("%s\n", sampleArray);

return EXIT_SUCCESS;
}



; ;