代码应该打印出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; }
ljsrvy3e1#
设置str指向字符串的开头,然后递增str,直到到达字符串的结尾,此时str已经指向字符串的结尾。请尝试使用其他指针遍历字符串,或仅保存指针的副本以供以后使用。看起来你的print语句的语法也是错误的。我已经几十年没有用C编写代码了。我现在是一个Python用户。但是我认为*str会引用一个字符,而你想引用整个字符串。所以如果str没有损坏,在你的printf()中使用%s和str而不是%c和*str。
str
*str
printf()
%s
%c
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'。请使用步行者。
plupiseo3#
#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;
}
4dc9hkyq4#
代码只应该做它被编程要做的事情,不折不扣地做到这一点。不幸的是,所写的内容并不总是与程序员希望程序做的事情一致。在while循环中,您递增str直到到达末尾,while循环在该点结束。现在指针指向字符串的末尾。除此之外,字符串的格式说明符是%s,而不是%c。%c将只打印单个字符。将 *str更改为str,除非您想打印单个字符,但您提到预期输出应该是Hello。的世界。
**注意:**不要将文本作为图像发布。将文本作为文本发布,您无法从图像复制并粘贴代码。很难看出问题可能来自何处,因此很难调试。
4条答案
按热度按时间ljsrvy3e1#
设置
str
指向字符串的开头,然后递增str
,直到到达字符串的结尾,此时str
已经指向字符串的结尾。请尝试使用其他指针遍历字符串,或仅保存指针的副本以供以后使用。
看起来你的print语句的语法也是错误的。我已经几十年没有用C编写代码了。我现在是一个Python用户。但是我认为
*str
会引用一个字符,而你想引用整个字符串。所以如果str
没有损坏,在你的printf()
中使用%s
和str
而不是%c
和*str
。jv4diomz2#
您可以迭代,直到找到空字符!
您的程式码无法运作,因为您正在递增原始字串并将它转换成'\0'。请使用步行者。
plupiseo3#
}
4dc9hkyq4#
代码只应该做它被编程要做的事情,不折不扣地做到这一点。不幸的是,所写的内容并不总是与程序员希望程序做的事情一致。
在while循环中,您递增str直到到达末尾,while循环在该点结束。现在指针指向字符串的末尾。除此之外,字符串的格式说明符是%s,而不是%c。%c将只打印单个字符。将 *str更改为str,除非您想打印单个字符,但您提到预期输出应该是Hello。的世界。
**注意:**不要将文本作为图像发布。将文本作为文本发布,您无法从图像复制并粘贴代码。很难看出问题可能来自何处,因此很难调试。