OSDN Git Service

データ保存関連を整備。
[chnosproject/CHNOSProject.git] / CHNOSProject / chn / chnlib01.c
index 11d74d8..4375ef7 100644 (file)
@@ -15,6 +15,7 @@
 #include <stdio.h>\r
 #include <stdlib.h>\r
 #include <string.h>\r
+#include <stdarg.h>\r
 #include "chnlib.h"\r
 \r
 //\r
@@ -62,6 +63,25 @@ CHNLIB_String *CHNLIB_String_Initialize(const char str[])
     return strtag;\r
 }\r
 \r
+CHNLIB_String *CHNLIB_String_InitializeWithFormat(const char format[], ...)\r
+{\r
+    CHNLIB_String *strtag;\r
+    va_list ap;\r
+    char str[CHNLIB_MAX_STRING_LENGTH];\r
+    \r
+    va_start(ap, format);\r
+    vsnprintf(str, sizeof(str), format, ap);\r
+    va_end(ap);\r
+    \r
+    strtag = CHNLIB_String_Internal_Allocate();\r
+    strtag->header.destructor = &CHNLIB_String_Internal_Destruct;\r
+    \r
+    if(str != NULL){\r
+        CHNLIB_String_SetStringFromCString(strtag, str);\r
+    }\r
+    return strtag;\r
+}\r
+\r
 void CHNLIB_String_Free(CHNLIB_String *strtag)\r
 {\r
     //strtagを解放する。\r
@@ -289,10 +309,13 @@ int CHNLIB_CString_CompareString(const char s[], const char search[])
     //s[]の先頭からsearch[]と比較し、searchの終端まで一致したらTrue, 一致しなかったらFalseを返す。\r
     //終端文字'\0'はカウントしない。\r
     //search[]に含まれる文字(終端文字除く)がすべて入っていれば一致とみなす。\r
+    //どちらかがNULLであった場合は、Falseを返す。\r
     int i;\r
     \r
     if(s == NULL || search == NULL){\r
+#ifdef DEBUG_STRING_STRICT\r
         CHNLIB_ReportError("Null str.\n", CHNLIB_DEBUG_ARGUMENTS);\r
+#endif\r
         return False;\r
     }\r
     \r