char input[100];
char *word;
gets(input);
word=strtok(input, " ");
char str[15];
str[0]=word;
printf("%c", str[0]);
这是我的代码,除了标题。我试图打印出角色,但它没有用。我怎么能修好它?我希望看到我从strtok()得到的角色。
答案 0 :(得分:2)
首先,不要使用gets()
。
然后你做了str[0]=word;
这是错误的。两种逃脱它的方法。使用指针数组并复制字符串或复制str
中的单词。
char input[100];
char *word;
char str[15];
if(fgets(input,100,stdin)){
word=strtok(input, " ");
if( word && strlen(word)<15){
strcpy(str,word);
printf("First word: %s\n", str);
}
}
否则
char input[100];
char *word;
char* str[5];
if(fgets(input,100,stdin)){
word=strtok(input, " ");
if( word ){
str[0]=strdup(word);
printf("First word %s\n", str[0]);
}
}
或者更简单地说,如果你知道这些单词之间有空格,就像你说的那样
char input[100];
char str[15];
if(fgets(input,100,stdin)){
if( sscanf(input,"%14s",str) == 1){
printf("First word %s\n",str);
}
}
要存储扩展代码所需的所有单词 - 我会向您显示strdup
的那个,另一个可以同样完成。
char input[100];
char *word;
char* str[5];
size_t cnt = 0;
if(fgets(input,100,stdin)){
word=strtok(input, " ");
while( word != NULL ){
str[cnt]=strdup(word);
printf("%zu word %s\n",cnt, str[cnt]);
cnt++;
word=strtok(NULL, " ");
}
}
使用完毕后释放重复的字符串。
答案 1 :(得分:0)
strtok
返回指向char
的指针。您需要取消引用word
才能将其str[0]
分配给str[0]
,char
类型为str[0]=word;
。
改变
str[0] = *word;
到
{{1}}
答案 2 :(得分:0)
strtok返回引用下一个标记的指针(在本例中为第一个标记),因此如果要访问此标记的第一个字符,则必须使用X_train, X_test
。在您的代码中,行y_train, y_test
会自动投放到word[0]
,这意味着
指针地址的第一个字节。
str[0]=word