linux에서도 이런 API가 있는지 모르겠어서 하나 간단하게 함수로 만들어 보았습니다. 머리가 나쁜면 손발이 고생한다고 하는데 -0-; 필요하신 분들이 있으면 잘 활용하셔요! 예외 처리등이 부실하니, 좀더 낳은 버전으로 수정 하시면 피드백 부탁 드리겠습니다. 그럼 고운하루 되세요.
/* * ex) test.ini * [Data] * value= 30 * ..... * * ex) GetProfileToString("[Data]", "value=", buffer, "/tmp/test.ini"); * 텍스트로 작성된 ini 등 에서 특정 섹션의 값을 읽어 온다. */
void GetProfileToString(char *section, char *keyName, char *string, char *fileFullPath) { char tempBuffer[MAX_PATH] = { 0 }; char *result = NULL; FILE *fp = fopen(fileFullPath, "rt"); if (fp == NULL) { goto FINALLY; }
while (fgets((char *)tempBuffer, MAX_PATH, fp)) { if (0 == strncmp(section, tempBuffer, strlen(section))) { memset(tempBuffer, 0, MAX_PATH); while (fgets((char *)tempBuffer, MAX_PATH, fp)) {
if(tempBuffer[0] == '[') { goto FINALLY; } if(0 == strncmp(keyName, tempBuffer, strlen(keyName))) { char *p = (char*)tempBuffer; p += strlen(keyName); memcpy(string, p, strlen(keyName)); fclose(fp); return; } } } memset(tempBuffer, 0, MAX_PATH); }
FINALLY: if (fp) { fclose(fp); } string = result; }
크리에이티브 커먼즈 라이선스