我有这样的代码
int main()
{
char* word = "kotok";
char* word1 = word;
while (word1 != '\0'){
printf("%s ", word1);
word1++;
}
return 0;
}
但是在印刷之后它并没有结束" kotok,otok,tok,ok,k"。此代码继续打印一些垃圾,然后停止。如何克服它?
我尝试添加word1[strlen(word1)] = '\0';
,但它会产生分段错误。
答案 0 :(得分:6)
word1
是一个指针。 '\0'
是一个角色。这就是为什么word1 != '\0'
没有达到你期望的效果。
您必须取消引用指针以获取它指向的字符:
while (*word1 != '\0') {
答案 1 :(得分:2)
word1
是一个指针。因此不为零,零
您需要更改
while (word1 != '\0'){
到
while (*word1 != '\0'){
以推荐指针
答案 2 :(得分:0)
您正在检查最后一个匹配字符的逻辑' \ 0' 根本不工作因为" word1"是一个指向另一个指针的指针" word"。
因此需要使用*
取消引用。
尝试更改
while (word1 != '\0')
要
while (*word1 != '\0')
这将解决您的问题。