#c
#c
Вопрос:
Мне нужно очистить все строки между StartLine и ScreenHight в c, но я получаю ошибку компилятора: warning: too many arguments for format [-Wformat-extra-args]
Код:
void clearScreen(int startLine, int screenHight)
{
for (int i=startLine; i<screenHight - 1; i)
{
printf("x1b[",i,";1H33[2K");
}
}
Ответ №1:
Первым аргументом printf
является строка формата.Ваша строка формата "x1b["
не имеет никаких спецификаторов формата, поэтому printf
не будет ожидать никаких других предоставленных вами аргументов. Таким образом, он будет печатать только строку формата.
Чтобы указать два других аргумента, используйте %d
(для печати целого i
числа) и %s
(для печати строки ";1H33[2K"
):
printf("x1b[%d%s",i,";1H33[2K");
Комментарии:
1. Большое вам спасибо, я очень новичок в c, это мне очень помогло 🙂
2. Рассмотрите возможность использования
printf("x1b[%d;1H33[2K", i);
Ответ №2:
Вы пытались создать строку для использования в качестве paremeter в
printf
вызов. Но это не то, как вы вводите строку c
. Используйте другой способ создания вашего строкового параметра (например sprintf
), а затем используйте эту строку в качестве параметра для printf
вызова.