Существует некоторая путаница в отношении наборов сканирования %[abc]
в строках формата scanf
: необходимо указать максимальное количество символов для чтения и указать диапазон символов от [
до ]
.Трейлинг s
после ]
отсутствует.Из-за лишних пробелов в строке формата пробелы пропускаются.
Вот исправленная версия вашего кода.
#include <stdio.h>
#include <string.h>
int main() {
FILE *fp;
char buffer[1024];
char zimu[128];
char zahla[128];
char zahlb[128];
fp = fopen("./0312.conf", "r");
if (fp == NULL) {
perror("error");
return -1;
}
zahla[0] = zahlb[0] = '\0';
while (fgets(buffer, 1024, fp) != NULL) {
if (sscanf(buffer, " %127[a-z]", zimu) != 1)
continue;
printf("zimu is: %s\n", zimu);
if (strcmp(zimu, "a") == 0) {
sscanf(buffer, " a = %127[1-9]", zahla);
}
if (strcmp(zimu, "b") == 0) {
sscanf(buffer, " b = %127[1-9]", zahlb);
}
}
printf("a=%s, b=%s\n", zahla, zahlb);
return 0;
}