【问题标题】:How to access a character in a character array如何访问字符数组中的字符
【发布时间】:2018-08-23 00:14:34
【问题描述】:
#include< stdio.h>

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

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

【问题讨论】:

  • 所以用 %c 代替,另一个 *
  • @Jean-FrançoisFabre 为什么?干什么用的?
  • 这不是那个问题的好副本...
  • @Jean-FrançoisFabre:这很可能是重复的,但链接的重复看起来并不正确?
  • 好的,现在我重新阅读了这个问题。我承认,这不是重复的。快速通道重新开放:)(但答案已经存在,请注意)

标签: c string pointers char printf


【解决方案1】:

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

const char *

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

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

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

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 )

【讨论】:

  • " 不带参数的函数 main 应声明为 int main( void )" 或以某种实现定义的方式。也就是说,如果您假设托管实施。在独立实现中,main 的形式始终是实现定义的。
【解决方案2】:

使用 %c:

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

【讨论】:

  • 谢谢...小费太快了:)
  • 你可以详细说明如何你必须使用%c
【解决方案3】:

你可以使用如下简单的技巧,

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

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

【讨论】:

    猜你喜欢
    • 2021-08-01
    • 2011-04-20
    • 2010-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多