【发布时间】:2020-01-30 15:39:02
【问题描述】:
我正在处理一个问题,该问题要求我在该位置打印一个给定 field-number 的字符串。字符串应该从文件中读取。
file.txt
C is a language.
lex lexical analyser
(blank line)
gcc is good
如果field-number 是 2(即句子中的第二个单词)。程序应该输出
is
lexical
(NULL)
is
我写了一个函数,但不认为它是正确的方法,它适用于所有情况。它应该处理额外的空格或换行符。
while (fgets(buffer, MAX, file) != NULL) {
for (int i = 1; i < strlen(buffer); i++) {
if (count == field_number - 1) {
int j = i;
while (j < strlen(buffer) && buffer[j] != ' ') {
printf("%c", buffer[j++]);
}
printf("\n");
count = 0;
break;
}
if (buffer[i] == ' ' && buffer[i - 1] != ' ') {
count++;
}
}
}
我是初学者。这段代码应该很容易理解。
【问题讨论】:
-
您自己进行标记化,虽然语言已经提供了一个:看看
strtok。 -
是的,但我必须在这里从头开始编写自己的逻辑。
-
因为最后一个
if语句。否则[i-1]将是-1,导致错误。不是很好 -
是的,可以使用
sscanf。你能告诉我怎么做吗? -
sscanf不知道有多少字,怎么用。