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;
}