如何使用fscanf捕获空间?

时间:2019-01-30 23:56:45

标签: c scanf

我不熟悉C编程,并且正在学习使用fscanf函数(或scanf系列函数)。我在理解如何使用fscanf函数捕获空白方面遇到一些麻烦。

假设我有以下情况,我打开了一个文件,并且文件仅包含一行字符,并且此文件中唯一一行的布局为:

A_C

A是一个字符序列,它是一个字符串。

_是一个空格,我使用_可以更清楚地显示它。

C是一个字符序列,它是一个字符串。

在这种情况下,_将始终留为空白。 A或C可能是wll的单个空格。

我的问题是,如何使用fscanf函数捕获A和C?不管它们是空格还是实际的字符序列?话虽这么说,如果A是一个字符序列,那么我捕获了这个字符序列,如果A是一个空格,我捕获了这个空格? (同样的想法也适用于C)。

非常感谢您。

1 个答案:

答案 0 :(得分:1)

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非常强大,但我从未尝试过使事情变得过于复杂的事情,其他人可能会更好地解释。但是,这应该可行。