Тема: Вправа 1-22 Керніган і Рітчі
Пропоную своє рішення для того як я зрозумів цю умову.
#include <stdio.h>
#define MAXCHAR 1024
#define LIMIT 10
int getline(char array[]);
void fold(char from[], char temp[], int m);
int main(void){
int i;
char line[MAXCHAR];
char temp[LIMIT+1];
i=0;
while((i = getline(line)) > 0){
if(i>LIMIT){
fold(line, temp, i);
}
printf("\nLine #1: %s\n", line);
printf("\nLine #2: %s\n", temp);
printf("\nLine #1 size: %d\n", i);
printf("\nEND OF CYCLE\n");
}
return 0;
}
int getline(char a[]){
int c, i;
for(i = 0; i < MAXCHAR - 1 && (c=getchar()) != EOF && c != '\n'; i++){
a[i] = c;
}
a[i] = '\0';
return i;
}
void fold(char from[], char temp[], int size){
int c, d, i, j, k;
c = j = 0;
d = LIMIT;
for(i=0; i<=size; i++){
if(i==d && c==0){
temp[i]='\0';
c = 1;
d += LIMIT;
j = LIMIT;
printf("%s\n", temp);
}else if(i==d && c==1){
temp[i]='\0';
c = 0;
d += LIMIT;
j = 0;
printf("%s\n", temp);
}else if(i==size && i!=d && c==0){
temp[j] = '\0';
printf("%s\n", temp);
}else if(i==size && i!=d && c==1){
while(j>0){
j--;
temp[j]=' ';
}
printf("%s\n", temp);
}
//direct
if(i<d && c==0){
temp[j] = from[i];
j++;
}
//reverse
if(i<d && c==1){
j--;
temp[j] = from[i];
}
}
}