Как сделать прокручивающийся текст - C (СИ)
Формулировка задачи:
Есть какой-то массив данных, экран 144х168 пикселей, туда вся информация из массива не помещается. Как сделать чтобы это массив автоматически прокручивался? От начала и до конца и так без остановки, пока я не вызову следующий ответ из массива, он тоже должен прокручиваться
Решение задачи: «Как сделать прокручивающийся текст»
textual
Листинг программы
char text[100500];/*сам текст*/
char buff[21]; /*или сколько там символов на экран помещается*/
int i;
buff[20]=0;
while(1)
{
for(i=0;i<100500-20;i++)
{ strncpy(buff,text+i,20);/*копирую в буффер часть основного текста*/
puts(buff);/*выводим на дисплей*/
}
for(i=100500-19;i<100500;i++)
{strncpy(buff,text+i,100500-i);/*копирую оставшуюся часть текста(кусок) хвоста*/
strncpy(buff+100500-i,text,20-100500-i);/*добавляю к буферу кусок с начала текста*/
puts(buff);/*выводим на дисплей*/
}
}
Объяснение кода листинга программы
В этом коде есть два основных блока кода:
- Внутренний цикл while(1) выполняет копирование и вывод текста с помощью цикла for. Копирование происходит с помощью функции strncpy, которая копирует до 20 символов текста из массива text в буфер buff. Затем с помощью функции puts выводится содержимое буфера на экран.
- Внешний цикл for копирует оставшуюся часть текста (когда уже заполнено 100500 - 20 = 99500 символов) в буфер buff, а затем добавляет к нему кусок с начала текста с помощью функции strncpy. Затем содержимое буфера выводится на экран с помощью функции puts. Поскольку внешний цикл начинается с 100500 - 19 = 99481, это означает, что он копирует только один символ текста, начиная с позиции 99481 в массиве text. Внутренний цикл выполняет перебор оставшихся символов текста (99481 - 20 = 99461), поэтому он выводит все оставшиеся символы. Таким образом, этот код выводит текст с прокруткой, при этом каждый раз выводится 20 символов текста.