Как сделать прокручивающийся текст - 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 символов текста.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д