我编写了以下代码:
char arrayD[] = "asdf";
char *arraypointer = &arrayD;
while(*arraypointer != '\0'){
printf("%s \n", arraypointer+1);
arraypointer++;
}
我尝试%d%c打印每个字符。但是,使用%c,我得到“????”,使用%s,我得到“ sdf sd f”。等。我在这里想念什么?
答案 0 :(得分:2)
您正在打印指针地址,而不是指针指向的地址。另外arrayD是地址,您不需要&arrayD。这是一个完整的工作示例:
#include <stdio.h>
int main()
{
char arrayD[] = "asdf";
char *arraypointer = arrayD;
while(*arraypointer != '\0'){
printf("%c \n", *(arraypointer+1));
arraypointer++;
}
return 0;
}
答案 1 :(得分:0)
void print_string_by_chars(const char *str)
{
while(*str)
{
putc(*str++, stdout);
putc('\n', stdout);
}
}
usage in your case:
print_string_by_chars(arrayD)
答案 2 :(得分:0)
嘿,您没有取消引用指针。你做了
arrayptr
,但您需要执行*arrayptr
。另外,如果要打印单个字符,则需要使用%c。
这是代码
#include <stdio.h>
int main()
{
char arrayD[] = "asdf";
char *arraypointer = arrayD;
while(*arraypointer != '\0'){
printf("%c \n", *(arraypointer));
arraypointer++;
}
return 0;
}
输出:
a
s
d
f