【发布时间】:2017-03-09 13:53:37
【问题描述】:
所以我试图在没有 strtok 的情况下标记一个字符串来完成家庭作业。教授建议我们在有空格的地方添加 '\0' 以将字符串分成类似 strtok 的部分。我的问题是,一旦我找到第一个空格,我可以在其中添加一个 '\0' 字符,但是它会停在那里,之后我无法将 '\0' 添加到其他空格字符。
int tokenize(char *line, int len){
int i;
char *ptr = line;
for(i=0; i<len; i++){
if(isspace(ptr[i]){
ptr[i]='\0';
}
}
return 1;
}
int main(){
char *line= "wo rd ";
int len = strlen(line);
tokenize(line, len);
return 1;
}
【问题讨论】:
-
您的代码尝试修改字符串文字,这是未定义的行为
-
char *line= "wo rd ";-->char line[] = "wo rd ";,因为不允许更改字符串字面量。 -
指针不是数组。正如其他人已经指出的那样,使用数组并使用字符串文字初始化它,而不是指向字符串文字的指针。