arrays - 通过在 c 中迭代打印字符

标签 arrays c pointers char c-strings

#include <stdio.h>

void fun(char *p) {
    if (p) {
        printf("%c", *p);
        p++;    
    }
}

int main() {
    fun("Y32Y567");
    return 0;
}

输出:Y

预期输出:Y32Y567

我的问题是为什么它没有按预期方式工作?

最佳答案

fun 函数在进入if 时只打印一个字符。您可能打算使用 while 循环,而不是单个 if 条件。此外,您的条件是错误的 - 只要 p 不是 NULL,它的计算结果就是 true-thy,如果您传递的是字符串文字,则不会发生这种情况。您可能打算测试 *p,即字符 p 指向:

void fun(char* p)
{
        while (*p) /* Here */
        {
            printf("%c",*p);
            p++;    
        }
}

关于arrays - 通过在 c 中迭代打印字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68230314/

相关文章:

javascript - 如何将数组与数组的数组进行比较?

arrays - F# 合并排序 - 尝试实现与结构的匹配时出现 IndexOutOfRangeException

C++ 指针不起作用?

将字符数组复制到字符指针中

c++ - 尝试打印出* ptr++的值,以了解其工作原理

ios - 如何将标签设置为 UIImageview 图像等于 iOS 中每个图像的数组索引?

Python:从 IP 地址列表生成 IP 范围

使用 strcat 和 realloc 的串联产生意外错误

c++ - 如何在 C 中限制套接字连接的带宽?

c - 包括多个平台/版本的 libc 目录