Очистить все строки в диапазоне в c

#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 вызова.