C中字符串的第一个字母

时间:2014-10-10 00:19:23

标签: c string printf

我想打印字符串的第一个字母,但是我遇到了运行时错误。

这是我的代码:

int main(void) {

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

    return 0;
}

如果这是字符串在C语言中的工作方式,我不会感到害羞,所以如果你有一些建议,请帮忙。

4 个答案:

答案 0 :(得分: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]);      

答案 1 :(得分:0)

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

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

发出严格的ISO C和ISO C ++&amp ;;所要求的所有警告。拒绝所有使用禁止扩展的程序。这会产生警告:

  

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

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

答案 2 :(得分:0)

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

int main(void) {

/*changed from str[] to *str 
*/

char *str = "Hello";

/*changed from %s to %c
*/

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

return 0;

}

这将打印str。

指向的char长度的第一个变量

答案 3 :(得分:0)

C-string是一系列以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 );