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

#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++;    
        }
}

https://stackoverflow.com/questions/68230314/

相关文章:

c++ - 如何在 C++ 中分解指向成员的指针(获取类和成员类型)?

rust - Crate 和 Package 之间的确切区别是什么?

python - 如何在 python 中循环函数 def,直到我写下数字 0

r - 从向量中提取重复 n 次的元素 (R)

postgresql - 为什么我的 PostgreSQL 在 CURRENT_TIMESTAMP

common-lisp - 为什么在这种情况下 find 函数返回 NIL?

java - 将小写的短工作日解析为 Java 8 的时间 DayOfWeek

r - 根据列中的值创建新行?

php - Laravel Sail 部署就绪了吗

javascript - 一个数组中的字符串在另一个数组中存在多少次?