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

时间:2018-03-14 12:49:15

标签: 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”。

3 个答案:

答案 0 :(得分:4)

对于初学者,你没有角色阵列。你有一个指针数组。另外,最好声明像

这样的数组元素的类型
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 )

答案 1 :(得分:3)

使用%c:

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

答案 2 :(得分:1)

您可以使用以下简单技巧

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

你想要角色,你应该使用%c 这是工作demo

相关问题