我的代码如下。我正在使用一个struct并接收一个输入文本文件。我把它分成几行,然后试着把每一行分成各自的单词。使用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++;
}
}
我为任何困惑预先道歉。我想要的是让linenum[I].separateword[0]返回第一个单词,等等。这可能吗?或者还有别的方法把我的输入分解成单词吗?
谢谢你
最佳答案
#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;
}