试图打印字符串

时间:2018-03-26 17:41:55

标签: c

我正在尝试打印字符串的第一个字母,在这种情况下,这个词是“雷达”。我遇到的问题是它打印出整个字符串。让我感到困惑的是,当我将str[0]更改为str[1]时,它会打印出“adar”。为什么要删除第一个字母并打印其余字母而不是相反?

void first(char *str)
{
  char *initial;
  initial = &(str[0]);

  printf("Its first character is %s\n", initial);

  return;

}

2 个答案:

答案 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);