【问题标题】:First letter of the string in C [closed]C中字符串的第一个字母[关闭]
【发布时间】:2014-10-10 00:19:22
【问题描述】:

我想打印字符串的第一个字母,但出现运行时错误。

这是我的代码:

int main(void) {

    char str[] = "Hello";
    printf("%s\n", str[0]);

    return 0;
}

我不确定字符串在 C 中是否是这样工作的,所以如果您有任何建议,请提供帮助。

【问题讨论】:

  • 在 printf 中,%c 用于单个字符,%s 用于字符串。
  • @jpw - 谢谢!你把我从一些巨大的恐怖中救了出来:D!
  • 您在下方评论说您正在使用在线编译器。为什么不下载完整的 MinGW C/C++ 编译器。它免费提供。

标签: c string printf


【解决方案1】:

你应该使用%c来打印单个字符

   printf("%c \n", str[0]);

要打印整个字符串,您需要使用 %s

   printf("%s\n", str);

您的代码会收到 warning,因此请注意警告

warning: format '%s' expects argument of type 'char*', but argument 2 has type 'int' [-Wf
ormat=]                                                                                                  
     printf("%s\n", str[0]);      

【讨论】:

  • Rajesh - 获取信息。可悲的是,我使用了一个在线编译器,除了正常的运行时错误之外什么也没给我:(!
  • 试试sourcelair.com,它有很好的Linux控制台界面。这不是促销,我经常使用它。
【解决方案2】:

C 字符串是一系列以 0 字节终止的字符,也称为空终止字符串。它可以作为数组 (char[]) 或指向第一个字符 (char *) 的指针访问。
注意:数组总是从 0 索引位置开始。

在您的代码中str 字符串类似于:

char str[] = "Hello";

str[0] = 'H'
str[1] = 'e'
str[2] = 'l'
str[3] = 'l'
str[4] = 'o'
str[5] = '\0'

因此,您只需使用printf 即可打印该字符串的任何字符

    printf( "%c",str[0] ); // for the first, changing the value if number you can change the position of character to be printed



您使用了%s,它用于打印整个字符串

   printf( "%s",str );

【讨论】:

    【解决方案3】:

    您必须使用"%c" 选项来打印带有printf 的单个字符,"%s" 用于字符串。您将在示例中遇到分段错误。用

    编译你的程序
    gcc -Os -Wall -pedantic main.c &&  ./a.out
    

    发出严格的 ISO C 和 ISO C++ 要求的所有警告并拒绝所有使用禁止扩展的程序。这将产生一个警告:

    警告:格式“%s”需要“char*”类型的参数,但参数 2 具有类型“int”[-Wformat=] printf("%s\n", str[0]);

    http://coliru.stacked-crooked.com/a/a56055e381c209f1

    【讨论】:

      【解决方案4】:

      这可能有助于获得预期的结果:

      int main(void) {
      
      /*changed from str[] to *str 
      */
      
      char *str = "Hello";
      
      /*changed from %s to %c
      */
      
      printf("%c\n", str);
      
      return 0;
      

      }

      这将打印 str 指向的第一个字符长度变量。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-08-24
        • 2021-07-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多