Я пытаюсь прочитать каждую строку файла и сохранить двоичные значения в соответствующие переменные. Я вижу, что есть много других примеров того, как люди делают подобные вещи, и я потратил два дня на тестирование различных подходов, которые я нашел, но все еще испытываю трудности с тем, чтобы заставить мою версию работать по мере необходимости.
У меня есть текст файл в следующем формате:
in = 00000000000, out = 0000000000000000
in = 00000000001, out = 0000000000001111
in = 00000000010, out = 0000000000110011
......
Я пытаюсь использовать fscanf, чтобы использовать ненужные символы "in =", "," и "out =" и сохранять только символы, представляющие двоичные значения.
Моя цель - сохранить первый столбец двоичных значений, значения "in" в одной переменной и второй столбец двоичных значений, значение "out" в другой буферной переменной.
Мне удалось заставить fscanf использовать символы "in" и "out", но я не смог понять, как заставить его использовать символы "," "=". Кроме того, я подумал, что fscanf должен использовать пустое пространство, но, похоже, он этого тоже не делает.
Кажется, я не могу найти исчерпывающего списка доступных директив для сканеров, кроме generi c "% d,% s,% c ....." и мне кажется, что мне нужна более сложная комбинация директив для фильтрации символов, которые я пытаюсь игнорировать, чем я знаю, как форматировать.
Я мог бы помочь с выяснением этого. Я был бы признателен за любые рекомендации, которые вы могли бы дать, чтобы помочь мне понять, как правильно отфильтровывать "in =" и ", out =" и как хранить два столбца двоичных символов в двух отдельных переменных.
Вот код, с которым я работаю в данный момент. Я пробовал другие итерации этого кода, используя fget c () в сочетании с fscanf () без успеха.
int main()
{
FILE * f = fopen("hamming_demo.txt","r");
char buffer[100];
rewind(f);
while((fscanf(f, "%s", buffer)) != EOF) {
fscanf(f,"%[^a-z]""[^,]", buffer);
printf("%s\n", buffer);
}
printf("\n");
return 0;
}
Выводы из моего кода выглядят следующим образом:
= 00000000000,
= 0000000000000000
= 00000000001,
= 0000000000001111
= 00000000010,
= 0000000000110011
Спасибо за ваше время.