#include<stdio.h>
#include<string.h>
void string1(char *q)
{
while(*q)
{
printf(q++);
printf("\n");
}
}
main()
{
char name[]= "hello";
char *p=name;
string1(p);
}
打印:
但我想要它打印;
我无法通过在printf中使用变量q来实现。感谢
答案 0 :(得分:3)
你的句子:printf(q++);
是错的。
你必须只打印一个角色:
printf("%c", *g++);
更好的选择:
putchar(*g++);
一般来说,请注意:
g
是一系列字符的地址。 g
指向的第一个字符,必须使用运算符*
,这样:*g
。 "%c"
中的修饰符printf()
使您可以打印char
类型的数据。
答案 1 :(得分:2)
您应始终使用带有printf
的格式字符串。将具有未知值的字符串传递到printf
函数可能会产生uncontrolled format string vulnerability。使用printf
打印c-string应如下所示:printf("%s", string_pointer);
也就是说,要一次打印一个字符,您可以使用%c
格式化程序:
while(*q) {
printf("%c\n", *(q++));
}
答案 2 :(得分:1)
您需要指定printf()
通过这样做:
printf(q++);
应用程序的行为就像你想要打印一个字符串一样(因为它一直打印到达\0
),所以你正在做的就是这个;
printf("%s",q++);
但你真正想要的只是打印q
位置的字符:
printf("%c",q++); // Prints only the char at q, then increment q