我正在尝试打印字符串的第一个字母,在这种情况下,这个词是“雷达”。我遇到的问题是它打印出整个字符串。让我感到困惑的是,当我将str[0]
更改为str[1]
时,它会打印出“adar”。为什么要删除第一个字母并打印其余字母而不是相反?
void first(char *str)
{
char *initial;
initial = &(str[0]);
printf("Its first character is %s\n", initial);
return;
}
答案 0 :(得分:6)
字符的格式说明符为%c
。
您可以通过解除引用str
str[0]
中的第一个字符
总而言之,你可以这样做:
void first(char *str)
{
printf("Its first character is %c\n", str[0]);
}
为什么要删除第一个字母并打印其余字母而不是相反?
str[1]
为您提供str
中的第二个字符。在您的代码中,您将initial
定义为设置为该第二个字符的地址的指针。然后,您将initial
视为一个字符串(通过使用%s
说明符打印),这样您就得到了第二个字符及其后的所有内容,直到字符串末尾的\0
字符
答案 1 :(得分:0)
char *initial;
initial = &(str[0]);
in this initial is pointer of character and you store the address of first character by writing &(str[0]).
if you write %s that means print string from address store in initial and when you store address of second element like &(str[1]) so it print string from 2nd letters.
So if you want to print only one character you have to write %c instead of %s.
printf("Its first character is %c\n", initial);