C 指向字符数组的指针

标签 c arrays pointers

我想将一个字符指针(指向数组)传递给一个函数,该函数将逐个打印字母。例如我正在使用下面的代码:

#include<stdio.h>
#include<string.h>

void string1(char *q)
{   
    while(*q)
    {
        printf(q++);
        printf("\n");
    }
}

main()
{
    char name[]= "hello";
    char *p=name;
    string1(p);
}

打印:

  • 你好
  • 你好
  • 你好
  • 你好
  • o

但是我想要它打印出来;

  • h
  • e
  • o

我无法通过在 printf 中使用变量 q 来做到这一点。谢谢

最佳答案

你的句子:printf(q++);是错误的。
你只需要打印一个字符:

  printf("%c", *g++);   

更好的选择:

 putchar(*g++);  

一般来说,考虑到:

  • g 是字符数组的地址。
  • 要访问g 指向的第一个字符,必须使用运算符*,这样:*g

printf() 中的修饰符"%c" 使您可以打印char 类型的数据。

关于C 指向字符数组的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24234550/

相关文章:

php - 添加复选框总和时解决 foreach() 的无效参数

java - ArrayIndexOutOfBounds,不明白为什么?

C++多维数组存储字符串

c++ - 为什么这个const char* 实际修改后不能修改呢?

python - ctypes 和字符串

c - 这个独特的文件头 'special marker' 如何告诉 eCryptfs 这是一个 eCryptfs 文件?

c - 理解下面一行

C 字符串输入混淆

c++ - 在 C++ 中自初始化为 nullptr 的普通原始指针

c - 如何导出使用 CryptoAPI 派生的 AES key