Если длина строки S больше N, то отбросить первые символы - C (СИ) (74536)
Формулировка задачи:
Дано целое число N (> 0) и строка S. Преобразовать строку S в строку длины N следующим
образом: если длина строки S больше N, то отбросить первые символы, если длина строки S
меньше N, то в ее начало добавить символы «.» (точка). Язык Си
Решение задачи: «Если длина строки S больше N, то отбросить первые символы»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char* Convert(char* str, int newlen) {
int len = strlen(str);
int offs = abs(len - newlen);
if (newlen < len) {
memmove(str, str + offs, newlen + 1);
}
else if (len < newlen) {
memmove(str + offs, str, len + 1);
memset(str, '.', offs);
}
return str;
}
int main() {
char text[64] = "Hello World";
printf("%s\n", Convert(text, 5));
printf("%s\n", Convert(text, 10));
return 0;
}
Объяснение кода листинга программы
- Подключение необходимых библиотек: iostream, string, cstring.
- Создание функции Convert, которая принимает два аргумента: строку str и новое значение длины newlen.
- Вычисление разницы между текущей длиной строки и новой длиной newlen.
- Проверка условия: если новая длина меньше текущей, то перемещение символов в начало строки.
- Проверка условия: если текущая длина меньше новой длины, то перемещение символов в начало строки и добавление символа точки в начало строки.
- Возврат измененной строки.
- Создание строки text и присваивание ей значения
Hello World. - Вызов функции Convert и передача ей строки text и новое значение длины 5.
- Вывод результата на экран.
- Вызов функции Convert и передача ей строки text и новое значение длины 10.
- Завершение работы программы.