Склеить строки xs и записать результат - C (СИ)
Формулировка задачи:
void stairs (char *xs[], char *result, int n);
Склеить строки xs и записать результат в result, таким образом, чтобы
получилась лестница. Максимум n символов с учётом нулевого символа в
конце строки. Если в n символов не умещается очередная строка, то её и все
последующие строки не писать в результат. Конец массива xs обозначается
указателем NULL
В терминале:
And
she's
buying
a
stairway
to
heaven
char *xs[] = {"And", "she's", "buying", "a", "stairway", "to", "heaven", NULL};
int n = 1000;
char result[n];
stairs(xs, result, n);Решение задачи: «Склеить строки xs и записать результат»
textual
Листинг программы
/* void stairs (char *xs[], char *result, int n);
Склеить строки xs и записать результат в result, таким образом, чтобы
получилась лестница. Максимум n символов с учётом нулевого символа в
конце строки. Если в n символов не умещается очередная строка, то её и все
последующие строки не писать в результат. Конец массива xs обозначается
указателем NULL
char *xs[] = {"And", "she's", "buying", "a", "stairway", "to", "heaven", NULL};
int n = 1000;
char result[n];
stairs(xs, result, n);
В терминале:
And
she's
buying
a
stairway
to
heaven */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char *xs[]={"And","she's","buying","a","stairway","to","heaven",NULL};
int n=1000;
char result[n];
int stairs(char **,char *,int);
stairs(xs,result,n);
printf("%s",result);
return 1;
}
int stairs (char **xs,char *result,int n)
{
int i;
char ln[]={"\n"};
for (i=0;i<7;i++)
{
strcat(result,ln);
strcat(result,xs[i]);
}
return 1;
}
Объяснение кода листинга программы
В данном коде реализован алгоритм склеивания строк, который выполняет функцию stairs.
- Объявлены входные параметры функции:
xs- указатель на массив указателей на строки, которые необходимо склеить. В данном случае, в массиве присутствуют строки:And,she's,buying,a,stairway,to,heaven.result- указатель на строку, в которую будут склеиваться строки.n- максимальное количество символов, которое может содержать результирующая строка.
- В функции main() объявлены переменные:
xs- массив указателей на строки, которые необходимо склеить.n- максимальное количество символов, которое может содержать результирующая строка.result- строка, в которую будут склеиваться строки.stairs- функция, которая выполняет склеивание строк.
- В функции stairs() происходит следующее:
- В цикле выполняется склеивание строк. Цикл выполняется 7 раз, так как в массиве xs присутствует 7 элементов.
- В каждой итерации цикла к результирующей строке добавляется символ новой строки (\n), чтобы строки были разделены.
- После добавления символа новой строки, к результирующей строке добавляется текущая строка из массива xs.
- В функции main() выполняется следующее:
- Выполняется вызов функции stairs(), которая выполняет склеивание строк.
- Результат склеивания выводится на экран с помощью функции printf().
- Возвращается значение 1, чтобы указать, что программа успешно завершилась.