如何使用指针打印字符数组中的每个字符?

时间:2019-02-02 12:00:21

标签: c

我编写了以下代码:

char arrayD[] = "asdf";
char *arraypointer = &arrayD;
while(*arraypointer != '\0'){
    printf("%s \n", arraypointer+1);
    arraypointer++;
}

我尝试%d%c打印每个字符。但是,使用%c,我得到“????”,使用%s,我得到“ sdf sd f”。等。我在这里想念什么?

3 个答案:

答案 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