C中的char *结束

时间:2016-11-12 20:23:32

标签: c pointers char

我有这样的代码

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';,但它会产生分段错误。

3 个答案:

答案 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')

这将解决您的问题。