У меня есть файл config.txt, в котором я храню конфигурации, необходимые для генерации некоторых записей, и я хочу прочитать значения конфигурации через код C и присвоить значения параметров некоторым переменным. Для целых чисел и чисел переменные назначаются правильно, но для строковых типов каждый раз, когда выполняется цикл, обновляются все строковые переменные, а не один конкретный.
Содержимое конфигурации.
TIME_LIMIT=2
ING_IP=45.45.45.45
TIMEZONE=GMT+05:30-India
const char* timeZone = "GMT+09:00-Tokyo";
const char* ingIp = "null";
int timeLimit = 0;
char *configFileName = argv[++i];
FILE *configFileHandle = fopen(configFileName, "r");
char * line = NULL;
// if (( fgets(line, 500, configFileHandle)) != NULL){
// puts(line);
// }
size_t len = 0;
ssize_t read;
while ((read = getline(&line, &len, configFileHandle)) != -1) {
printf("Line: %s\n", line);
char *parameter = strtok(line, "=");
char *value = strtok(NULL, "=");
char *ptr;
if( (ptr = strchr(value, '\n')) != NULL)
*ptr = '\0';
if( (ptr = strchr(value, '\r')) != NULL)
*ptr = '\0';
if ( strcmp(parameter, "TIME_LIMIT") == 0 ) {
timeLimit = atoi(value);
}else if ( strcmp(parameter, "TIMEZONE") == 0 ) {
timeZone = value;
}else if ( strcmp(parameter, "ING_IP") == 0 ) {
ingIp = value;
}
}
Результаты, которые я получаю, находятся на каждой итерации. Значение timeZone перезаписывается последним значением ingIp. Я хочу назначить ingIp = "45.45.45.45" и timeZone = "GMT + 05: 30-India". Для timeLimit значение назначается правильно.