Как использовать fscanf для захвата пространства? - PullRequest
0 голосов
/ 31 января 2019

Я новичок в программировании на C, и я учусь использовать функцию fscanf (или функции семейства scanf.).У меня возникли проблемы с пониманием того, как использовать функцию fscanf для захвата пробелов.

Предположим, у меня есть следующий сценарий, я открыл файл, и файл содержит только одну строку символов и макет толькострока в этом файле:

A_C

A - это последовательность символов, представляющая собой строку.

_ - это пробел, я использую _, чтобы показать его подробнееясно.

C - это последовательность символов, представляющая собой строку.

В этом сценарии _ всегда будет оставаться пробелом.A или C могут быть одним пробелом как wll.

Мой вопрос: как использовать функцию fscanf для захвата как A, так и C?Независимо от того, являются ли они пробелами или фактической последовательностью символов?При этом, если A - это последовательность символов, то я фиксирую эту последовательность символов, если A - это пробел, я фиксирую этот пробел?(Та же идея относится и к C).

Большое спасибо.

1 Ответ

0 голосов
/ 31 января 2019
char str[BUFF_SIZE];

fgets(str, sizeof(str), fp);

if (the first char is a space) {
    Means A == " ";
}

if (the last char is a space) {
    Means B == " ";
}

if (both are spaces) {
    done;
} else if (only one is space) {
    sscanf(scan for one string, which will be the one that wasn't a space);
} else {
    sscanf(scan for two strings, separated by a space);
}

Это может быть выполнимо в одной строке, fscanf очень мощный, но я никогда не пробовал вещи, которые слишком усложняют, и кто-то другой может объяснить это лучше.Однако это должно работать.

...