main.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
int GetPrivateProfileString(const char *title, const char *key, char *retbuf, const char *filename)
{
FILE *fp = NULL;
char *temp = NULL;
char line[255] = {0};
char buffer[255] = {0};
int ch = 0, i = 0, flag = 0;
if ((fp = fopen(filename, "r")) == NULL) {
printf("failed to open file\n", filename);
return -1;
}
while (!feof(fp)) {
ch = fgetc(fp);
if (ch == EOF) {
break;
}
line[i++] = ch;
if (ch != '\n') {
continue;
}
line[--i] = '\0';
i = 0;
temp = strchr(line, '=');
if ((temp != NULL) && (flag == 1)) {
if (strstr(line, key) != NULL) {
strcpy(retbuf, temp + 1);
fclose(fp);
return 0;
}
}
else {
strcpy(buffer, "[");
strcat(buffer, title);
strcat(buffer, "]");
if (strncmp(buffer, line, strlen(buffer)) == 0) {
flag = 1;
}
}
}
fclose(fp);
return -1;
}
int main(int argc, char **argv)
{
char buffer[255] = {0};
if (GetPrivateProfileString("basic", "log", buffer, "config.ini") == 0) {
printf("Result: %s\n", buffer);
}
return 0;
}
編譯、執行
$ vim config.ini
[basic]
log="test"
$ gcc main.c -o main
$ ./main
Result: "test"