Отображение звездочек против отображения символов с функцией - PullRequest
0 голосов
/ 13 ноября 2018

Я написал функцию (asterisksDisplay), которая отображает сплошной прямоугольник звездочек, стороны которых указаны в целочисленных параметрах как row и column, которые взяты у пользователя.Программа ниже работает отлично.

#include <stdio.h>

void asterisksDisplay (int row, int column);

int main (void)
{
    int a=0;
    int b=0;
    printf("Please enter sides of your shape: ");
    scanf("%d%d", &a, &b);
    printf("\nYour shape is: \n");
    asterisksDisplay(a, b);
}

void asterisksDisplay (int row, int column)
{
    for (int i = 1; i <= row; i++) {
        for (int p = 1; p <= column; p++) {
            printf("*");
        }
        printf("\n");
    }
 }

Когда я пытаюсь изменить эту функцию звездочек на функцию отображения заданного пользователем символа, каким-то образом компилятор пропускает отображение символа.

#include <stdio.h>

void asterisksDisplay (int row, int column, char character);
int main (void)
{
    int a=0;
    int b=0;
    char c;
    printf("Please enter sides of your shape: ");
    scanf("%d%d", &a, &b);
    printf("\nplease enter the character to be filled: ");
    scanf("%s", &c);
    printf("\n");
    asterisksDisplay(a, b, c);
}

void asterisksDisplay (int row, int column, char character)
{
    for (int i = 1; i <= row; i++) {
        for (int p = 1; p <= column; p++) {
            printf("%c", character);
        }
        printf("\n");
    }
}

Какое решение это исправить?

1 Ответ

0 голосов
/ 13 ноября 2018

Изменение

 scanf("%s", &c);

до

 scanf(" %c", &c);
          ^^-----------------------(i)
       ^^------------------------- (ii)
  • Изменение спецификатора преобразования с %s на %c, как (i): потому что c имеет тип char.

  • Нам нужно экранировать ранее введенную новую строку, поэтому лишний пробел перед спецификатором преобразования, который сопоставляет и отбрасывает любые входные пробелы, присутствующие в буфере.

...