Как соединить / связать слова в строковом массиве, используя только один цикл?
у меня есть массив с n словами .. Я хочу прикрепить строки вместе .. например, если массив имеет следующие строки: "hello ""world""!! "я хочу, чтобы функция возвращала :" helloworld!! "любая помощь, как я могу сделать что-то подобное без рекурсии и только с одним циклом !! и я могу использовать только из библиотеки строк две функции strcpy и strlen !! любые идеи ! спасибо
Что я уже пробовал:
#include <stdio.h> #include <stdlib.h> #include <string.h> char * connect( char **words, int n ) { int length = 0; for ( int i = 0; i < n; i++ ) length += strlen( words[i] ); char *s = malloc( length + 1 ); int pos = 0; for ( int i = 0; i < n; i++ ) { strcpy( s + pos, words[i] ); pos += strlen( words[i] ); } return s; } int main( void ) { char * s[] = { "Hello", " ", "World" }; int x=(sizeof( s ) / sizeof( *s )); char *p = connect( s, x); // puts( p ); free( p ); }
PIEBALDconsult
Это работает? Какой результат вы получаете? Или вы просто пытаетесь упростить?
Лучше избегать вызова strlen так много раз, чем избегать цикла.
kasandra77
он работает отлично .. я получаю желаемый результат (hello world), но я хочу сделать то же самое, но использовать только один цикл в коде !
PIEBALDconsult
Должна ли она быть неизменной? :Д
kasandra77
вы имеете в виду под неизменяемым, что я не могу изменить этот массив ? если это то, что вы имеете в виду, то да ! я также не могу изменить массив, и это делает это очень трудным !
kasandra77
все равно спасибо ! к сожалению, я больше не могу задать этот вопрос, лол, всего 30 минут подъема .. но спасибо Вам за то, что вы мне помогли, это очень много значит
kasandra77
я думал о том чтобы сделать перераспределение но я вроде как застрял там лол