我有一个包含 1 行的文件,在 Linux 上它默认以换行符结尾
one two three four
和一个类似的
one five six four
保证中间的两个词永远不会是“四”。我写了以下内容,想将“二三”和“五六”分配给一个变量,就像在这段代码中一样。
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
bool getwords(FILE *example)
{
bool result = 0;
char *words;
if(fscanf(example, "one %s four\n", words) == 1)
{
printf("captured words are %s\n", words);
if(words == "two three"
|| words == "five six")
{
puts("example words found");
}
else
{
puts("unexpected words found");
}
result = 1; //so that we know this succeeded, in some way
}
return result;
}
int main(int argc, char * argv[])
{
if(argc != 2)
{
exit(0);
}
FILE *example;
example = fopen(argv[1],"r");
printf("%x\n", getwords(example)); //we want to know the return value, hex is okay
fclose(example);
return 0;
}
问题是这将打印“捕获的单词是”,然后只有两个单词中的第一个单词会出现在字符串中。这应该支持在单词“one”和“four”之间可能有超过 2 个单词的文件。如何更改我的代码,以获取字符串中第一个和最后一个单词之间的所有单词?