C语言 printf不输出给定的参数

lb3vh1jj  于 2022-12-02  发布在  其他
关注(0)|答案(4)|浏览(239)

代码应该打印出13:Hello World!,但输出结果只有13:。

#include <stdio.h>
   int main(){

  char *str = "Hello World!\n";

 int Laenge= 0;

  while (*str++){

   ++Laenge;
   }  
  printf(" %d:%c\n", Laenge, *str);
  return 0;
   }
ljsrvy3e

ljsrvy3e1#

设置str指向字符串的开头,然后递增str,直到到达字符串的结尾,此时str已经指向字符串的结尾。
请尝试使用其他指针遍历字符串,或仅保存指针的副本以供以后使用。
看起来你的print语句的语法也是错误的。我已经几十年没有用C编写代码了。我现在是一个Python用户。但是我认为*str会引用一个字符,而你想引用整个字符串。所以如果str没有损坏,在你的printf()中使用%sstr而不是%c*str

jv4diomz

jv4diomz2#

您可以迭代,直到找到空字符!

#include <stdio.h>

int main()
{
    char *str = "HELLO WORLD!\n";
    int len = 0;
    
    while(*(str + len) != '\0'){
        len++;
    }
    printf("%d:%s", len, str);

    return 0;
}

您的程式码无法运作,因为您正在递增原始字串并将它转换成'\0'。请使用步行者。

plupiseo

plupiseo3#

  • 你需要记住原来的字符串指针
  • 您应该打印tf字符串而不是 * 字符串
#include <stdio.h>
int main(){

 char *str = "Hello World!\n";
 char *temp = str;
 int Laenge= 0;

 while (*temp++){

   ++Laenge;
 }  
 printf(" %d:%c\n", Laenge, str);
 return 0;

}

4dc9hkyq

4dc9hkyq4#

代码只应该做它被编程要做的事情,不折不扣地做到这一点。不幸的是,所写的内容并不总是与程序员希望程序做的事情一致。
在while循环中,您递增str直到到达末尾,while循环在该点结束。现在指针指向字符串的末尾。除此之外,字符串的格式说明符是%s,而不是%c。%c将只打印单个字符。将 *str更改为str,除非您想打印单个字符,但您提到预期输出应该是Hello。的世界。

**注意:**不要将文本作为图像发布。将文本作为文本发布,您无法从图像复制并粘贴代码。很难看出问题可能来自何处,因此很难调试。

相关问题