Как я могу напечатать каждый символ в моем массиве символов, используя указатели? - PullRequest
0 голосов
/ 02 февраля 2019

Я написал следующий код:

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

Я пытался% d% c напечатать каждый символ.Однако с% c я получаю "????", С% s я получаю "sdf sd f".и т.д. Что мне здесь не хватает?

Ответы [ 3 ]

0 голосов
/ 02 февраля 2019
void print_string_by_chars(const char *str)
{
    while(*str)
    {
        putc(*str++, stdout);
        putc('\n', stdout);
    }
}

использование в вашем случае:

print_string_by_chars(arrayD)
0 голосов
/ 02 февраля 2019

эй, вы не разыменовывали указатель.Вы сделали 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
0 голосов
/ 02 февраля 2019

Вы печатаете адреса указателя вместо того, на что указывает указатель.Также arrayD - это адрес, вам не нужен & arrayD.Вот полный рабочий образец:

#include <stdio.h>
int main()
{
    char arrayD[] = "asdf";
    char *arraypointer = arrayD;
    while(*arraypointer != '\0'){
        printf("%c \n", *(arraypointer+1));
        arraypointer++;
    }
    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...