c - 如何访问字符数组中的字符

标签 c string pointers char printf

#include< stdio.h>

int main()
{
    char *name[] = { "hello" , "world" , "helloworld" };    /* character array */       
    printf("%s", (*(name+2)+7));
    return 0;
}

上面的代码打印出“rld”。我只想打印“r”。

最佳答案

对于初学者,您没有字符数组。你有一个指针数组。另外最好声明数组元素的类型,例如

const char *

因为字符串文字在 C 中是不可变的。

而不是 %s 说明符,您需要使用说明符 %c 来仅输出一个字符。

输出数组第三个元素的目标字符的一种简单明了的方法是

printf("%c", name[2][7]);

或者使用你可以写的指针算法

printf("%c", *(*( name + 2 )+7 ) );

这是一个演示程序

#include <stdio.h>

int main(void) 
{
    const char *name[] = 
    { 
        "hello" , "world" , "helloworld" 

    };

    printf( "%c\n", *( * ( name + 2 ) + 7 ) );
    printf( "%c\n", name[2][7] );

    return 0;
}

它的输出是

r
r

考虑到根据 C 标准,不带参数的函数 main 应声明为

int main( void )

关于c - 如何访问字符数组中的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49278209/

相关文章:

string - 使用 `pop3::POP3Stream::connect` 连接到给定 `host` 的运行时?

c++ - #define hell C/C++ 的替代品/工具

C 程序为简单的数学给出了错误的输出!

java - 从整数字符串中减去整数

javascript - 如何从指针访问对象?

javascript - 为什么重新分配函数指针会减慢函数调用

无法通过 malloc

python - 如何正确解析ctypes中的嵌套结构

c - 如何在C中创建自定义多个进程?

python - 如何使用正则表达式进行多次替换?