我有一个由一行单词组成的数组(我使用了fgets)。我现在想要创建一个新数组作为包含相同行的相同结构的一部分,但是分成只有字母数字字符的单词(这样行[1] .word_in [3]会给我第1行中的第3个单词)。我有一点尝试,但它没有用。
typedef struct {
char linewords[101];
char separateword[101];
} line;
line linenum[101];
while fgets(linenum[i].linewords, 101, stdin) != NULL) {
i++
linenum[i].separateword = linenum[i].linewords.Split(' ');
if (isalnum(int linenum[i].separateword) != 0) {
/* need to remove that character */
}
}
我很抱歉我真的不知道自己在做什么。我的第一个问题显然是拆分结构,因为这给了我一个错误。谢谢
编辑: 我已经加入了我正在做的事情;但是,在分配var。
时,我收到了分配错误 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, ' '); /*this line causes seg fault*/
i++
}
}
答案 0 :(得分:0)
strtok()返回一个字符指针。它在
char *strtok(char *s, const char *delim) ;
所以问题是你没有保存返回的值。
while fgets(linenum[i].linewords, 101, stdin) != NULL) {
//strcpy(linenum[i].separateword,linenum[i].linewords);
linenum[i].seperatewords=strtok(linenum[i].linewords, ' ');
i++
}
它将解决您的问题。 有关strtok()的更多详细信息: strtok()