CS50 Mario - Помощь при ошибках; Аргумент данных не используется строкой формата - PullRequest
0 голосов
/ 07 мая 2020

Я не могу завершить sh марио и не знаю, почему он не работает.

Я смотрел видео, и кто-то использовал "void print (char c, int n); в качестве прототипа (?) Сверху, но я не понимаю, почему он должен быть там.

Код:

#include <stdio.h>
#include <cs50.h>

int main(void)
{
    int n;
    do
    {
        n = get_int("Height: ");
    }
    while (n < 1 || n > 8); 
    for (int i = 0; i < n; i++)
    {
        printf(".", n - 1 - I);
        printf("#", i + 1);
        printf("\n");
    }     
}

Ошибка:

clang -ggdb3 -O0 -std=c11 -Wall -Werror -Wextra -Wno-sign-compare -Wno-unused-parameter -Wno-unused-variable -Wshadow    marioblock.c  -lcrypt -lcs50 -lm -o marioblock
marioblock.c:14:19: error: data argument not used by format string
      [-Werror,-Wformat-extra-args]
      printf(".", n - 1 - i);
             ~~~  ^
marioblock.c:15:19: error: data argument not used by format string
      [-Werror,-Wformat-extra-args]
      printf("#", i + 1);
             ~~~  ^

1 Ответ

0 голосов
/ 11 мая 2020

Это синтаксическая ошибка. Вы неправильно используете printf (аргументы). Вы можете использовать for loop для многократной печати одного и того же символа.

Например, следующий код напечатает 3 хэша ###;

int main(void)
{
    for(int i = 0; i < 3; i++)
    {
        printf("#");
    }
    printf("\n");
}

Чтобы достичь набора mario, используйте один для l oop для печати хэшей, используйте другой для l oop для печати пробелов. Надеюсь, это поможет вам разобраться в дизайне.

...