Печатать один символ строки C за раз - PullRequest
0 голосов
/ 01 февраля 2020

У меня есть переменная: char *string и for l oop с int i=0 до len(string).

Внутри l oop она печатает &string[i].

Попытка заставить его показать только одиночный символ, но если у меня есть строка "red", она выдаст:

red
ed
d

1 Ответ

1 голос
/ 01 февраля 2020

Чтобы напечатать символ с printf(), вам нужно использовать соответствующий спецификатор формата, %c, например:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void)
{
  char* string = malloc(sizeof(char) * 16);
  strcpy(string, "red");
  for(size_t i = 0; i < strlen(string); ++i)
  {
    printf("%c\n", string[i]);
  }
  return 0;
}

Вывод:

r
e
d

Как прокомментировал @jonathanLeffler, putchar(string[i]); также справился бы с задачей.


В вашей попытке что-то пошло не так, как эта строка *:

printf("%s\n", &string[i]);

который из-за спецификатора формата %s для строк будет печатать всю строку до конца (встречается терминатор NULL), начиная с символа i.


В обратном порядке спроектировано из примера выходных ваших и пост.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...