首页 > 解决方案 > C 编程:使用字符指针打印以空字符结尾的字符串

问题描述

我刚刚习惯了 C 中的指针。我正在考虑使用 %s 来打印字符数组的第一个字符。

在下面的代码中,为什么 %s 不起作用,但 %c 起作用?如果 *my_string 正在取消引用字符数组的第一个值,那么 %s 是否会尝试打印内存中从该地址开始的所有字符并继续直到到达一个空零字符?

此外,如何printf("%s", my_string)工作,但printf("%s" *my_string)不是?

char* my_string = "The original value.";
printf("Value of my_string: %s\n", my_string);
my_string = "The new value.";
printf("Value of my_string: %s\n", *my_string); // Error
printf("Value of my_string: %c\n", *my_string); // Prints only the first letter 'T', but does not have any errors

标签: arrayscchar

解决方案


星号*取消引用指向它所指向的类型的指针,因此当my_string是指向字符的指针时,*my_string是一个字符。您的 C 编译器会看到包含 a%s和一个参数的格式字符串,该参数*my_string是一个字符,并向您显示错误。

要输出整个字符串,请像在第一次调用 时一样打印它printf,要只打印一个字符,请像上次调用时那样做printf


推荐阅读