我的代码如下。我正在使用结构并接收输入文本文件。我把它分成几行,然后尝试将每一行分成单独的单词。使用strtok,它目前只打印每行的第一个单词。我该如何解决这个问题?
typedef struct {
char linewords[101];
char separateword[101];
} line;
以下是主要内容:
line linenum[101];
char var[101]
char *strtok(char *str, const char delim);
while fgets(linenum[i].linewords, 101, stdin) != NULL) {
char* strcopy();
char* strtok();
strcpy(linenum[i].separateword,linenum[i].linewords);
strtok(linenum[i].separateword, " "); /*line i'm referring to*/
i++;
}
}
我提前为任何困惑道歉。我想要的是拥有它所以,因为亚麻[i] .separateword [0]将返回第一个单词,等等。这可能吗?或者是否有另一种方法将我的输入分成单词?
谢谢
答案 0 :(得分:2)
#include <stdio.h>
#include <string.h>
typedef struct {
char linewords[101];
char *separateword[51];
} line;
int main(void){
line linenum[101];
int i = 0;
while(fgets(linenum[i].linewords, sizeof(linenum[i].linewords), stdin) != NULL) {
char *token, *delm = " \t\n";
int j = 0;
for(token = strtok(linenum[i].linewords, delm);
token;
token = strtok(NULL, delm)){
linenum[i].separateword[j++] = token;
}
linenum[i++].separateword[j] = NULL;
}
{//test print
char **p = linenum[0].separateword;
while(*p)
puts(*p++);
}
return 0;
}