Для начала у нас есть массив строк, я должен напечатать этот массив таким образом, чтобы одно слово перед пробелом или первые 12 символов = одна строка.
Например, допустим, у нас есть строка "hello world qwerty ------ asd ", это должно быть напечатано как:
hello
world
qwerty------ (12 characters without space)
asd
Таким образом, это будет легко обойтись без этого условия 12 символов в задаче (я думаю, просто функция strtok), но в этом случае, я не знаю, что делать, у меня есть идея, но она работает только с 50% входных данных, вот она, это довольно большой и очень глупый, я знаю, о функциях строк, но не могу сделатьalgoritm, спасибо:
int counter = 0;// words counter
int k1 = 0;// since I also need to print addresses of letters of third word, I have to know where 3rd word is
int jbegin=0,// beginning and end of 3rd word
jend=0;
for (int k = 0; k < i; k++) {
int lastspace = 0;//last index of new string( space or 12 characters)
for (int j = 0; j < strlen(*(arr + k)); j++) {
if (*(*(arr + k) + j) == ' ' ) { //if space
printf("\n");
lastspace = j;
counter++;
if ( counter == 3 ) { // its only for addreses, doesnt change anything
k1 = k;
jbegin = j + 1;
jend = jbegin;
}
}
if (j % 12 == 0 && (j-lastspace>11 || lastspace==0) ) { // if 12 characters without space - make a new string
printf(" \n");
counter++;
lastspace = j;
}
if (counter==3 ) {
jend++;
}
printf("%c", *(*(arr+k) + j)); // printing by char
}
printf("\n ");
}
if ( jend!=0 && jbegin!=0 ) {
printf("\n Addreses of third word are :\n");
for (int j = jbegin; j < jend; j++) {
printf("%p \n", arr + k1 + j);
printf("%c \n", *(*(arr + k1) + j));
}
}