我想打印字符串的第一个字母,但是我遇到了运行时错误。
这是我的代码:
int main(void) {
char str[] = "Hello";
printf("%s\n", str[0]);
return 0;
}
如果这是字符串在C语言中的工作方式,我不会感到害羞,所以如果你有一些建议,请帮忙。
答案 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]);
答案 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 );