C
C
Implement Preprocessor #include with StringBuilder
Demonstrates how to implement #include with a Chilkat StringBuilder.Chilkat C Downloads
#include <C_CkStringBuilder.h>
void ChilkatSample(void)
{
HCkStringBuilder sbSrc;
const char *filePath;
HCkStringBuilder sbIncludeFile;
// First build a string that has a preprocessor include
sbSrc = CkStringBuilder_Create();
CkStringBuilder_Append(sbSrc,"1\r\n2\r\n3\r\n");
CkStringBuilder_Append(sbSrc,"#include <qa_data/txt/helloWorld.txt>\r\n");
CkStringBuilder_Append(sbSrc,"4\r\n5\r\n");
printf("%s\n",CkStringBuilder_getAsString(sbSrc));
// sbSrc contains:
// 1
// 2
// 3
// #include <qa_data/txt/helloWorld.txt>
// 4
// 5
// The qa_data/txt/helloWorld.txt file contains "Hello World!"
filePath = CkStringBuilder_getAfterBetween(sbSrc,"#include","<",">");
if (CkStringBuilder_getLastMethodSuccess(sbSrc) != TRUE) {
printf("No #include's found.\n");
CkStringBuilder_Dispose(sbSrc);
return;
}
printf("filePath: %s\n",filePath);
// Load the contents of the filePath
sbIncludeFile = CkStringBuilder_Create();
CkStringBuilder_LoadFile(sbIncludeFile,filePath,"utf-8");
// Replace the first occurrence of #include <...> line with the contents of the include file.
CkStringBuilder_ReplaceAllBetween(sbSrc,"#include",">",CkStringBuilder_getAsString(sbIncludeFile),TRUE);
printf("%s\n",CkStringBuilder_getAsString(sbSrc));
// sbSrce now contains:
// 1
// 2
// 3
// Hello World!
// 4
// 5
CkStringBuilder_Dispose(sbSrc);
CkStringBuilder_Dispose(sbIncludeFile);
}