![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Ввести символьний рядок і розділити його на частини фіксованої довжини. Вивести на екран отримані частини рядка "у стовпчик", тобто кожну частину з нового рядка екрана. Нехай у кожній частині рядка буде не більш 3 символів:
//динамічні символьні масиви, покажчики і рядки
#include <stdio. h>
#include <string. h>
void main()
{
int len_max, len=0;
char*n;* input;
int ks;//кількість "частин" рядка
char**c;//покажчик на масив покажчиків
in+n=0;
in+j=0;
in+i;
printf("введіть максимальний елемент рядка:");
scanf("%d", & len_max);
/* виділити пам'ять для рядка, що вводиться,*/
input=(char*)malloc(len_max);
printf("\n уведи рядок:");
/*видалення символу '\n' із вхідного потоку, щоб він не став нульовим символом рядка, що вводиться,*/
get char();
/* читання рядка*/
while((*(input+len++)=get char());='\n');
len;//len-кількість уведених символів
/* Додати ознака кінця рядка*/
*(input+len)='\0';
/* виділити пам'ять для введеного рядка */
n=(char *) malloc (len++);
while(*(n+j++0=* input++);//інформацію з вхідного рядка
/* видалення із пам'яті вихідного рядка */
free(input);
ks =(len++)/3;//кількість частин
с=(char**) calloc(ks, sizeof(char*)//void callosb (unsignedn,kn signed m) - виділення динамічної пам'яті на n елементів по m байт.
/* Розподіл рядка на ks частин*/
for(j=0;j<ks;j++)
{
*(c+j)=(char*) malloc(u);//Пам'ять для частини
for (i=0;(i<3&& *(h+n));i++)
*(*cc +j) +i)=*(h+n++);
*(*(c+j+i)='\0';
}
/* видалення з пам'яті обробленого рядка*/
free(h);
/* Висновок "частин" вихідного рядка*/
for (j=0; j<ks;j++)
{
printf ("\n%s", *(c_j));
}
/* звільнити пам'ять від динамічних масивів*/
for ij=0;j<ks;j++)
free989c=J00;
free(c);
}
Дата публикования: 2015-09-17; Прочитано: 221 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!