Как объяденить слова ?
т.е. например
per1="aaa";
per2="bbb";
perl3="ccc";
то per99 должно равняться "aaabbbccc"
вот как я пробую
#include <stdio.h>
#include <string.h>
main() {
char *per1="123";
char *per2="989";
char *per3;
per3=strcpy (per3, per1);
printf ("%s\n",per3);
per3=strcat (per3, per2);
printf ("%s\n",per3);
}
так все работате, но мне надо per1 изменять, пробую так:
#include <stdio.h>
#include <string.h>
main() {
char *per1;
char *per2="989";
char *per3;
per1="100";
per3=strcat (per3, per1);
printf ("%s\n",per3);
per3=strcat (per3, per2);
printf ("%s\n",per3);
per3=strcat (per3, per2);
printf ("%s\n",per3);
exit(0);
return 0;
}
Вот ответ:
# ./a.out
Segmentation fault
как еще можно это сделать ?
Объеденение слова в одно
Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain
Для начала нужно обьявлять не указатели на символы, а массивы символов. Далее - если строка не проинициализирована, то не надо ее использовать. И еще - для конкатенации при помощи strcat не нужно присваивать строке результат функции, достаточно передать эту строку первым параметром. Вот решение:
char per1[20]="aaa";
char per2[]="bbb";
char perl3[]="ccc";
strcat (per1, per2);
strcat (per1, per3);
printf ("%s\n",per1);
да, и еще - не забывай создавать результирующую строку с достаточным количеством элементов для включения других строк(у меня - char per1[20]="aaa"
char per1[20]="aaa";
char per2[]="bbb";
char perl3[]="ccc";
strcat (per1, per2);
strcat (per1, per3);
printf ("%s\n",per1);
да, и еще - не забывай создавать результирующую строку с достаточным количеством элементов для включения других строк(у меня - char per1[20]="aaa"

Вообще для формирования строки произвольной длины из любого количества отдельных фрагментов лучше использовать специальный класс потока для строки - ostrstream.
Это будет выглядеть примерно так:
ostrstream oss; // объявление потока
oss << "aaa" << "bbb" << "ccc" << 999; // запись в поток
oss << '\0'; // завершение потока строки
char *s = oss.str(); // получение результата
В результате получится строка "aaabbbccc999"
Это будет выглядеть примерно так:
ostrstream oss; // объявление потока
oss << "aaa" << "bbb" << "ccc" << 999; // запись в поток
oss << '\0'; // завершение потока строки
char *s = oss.str(); // получение результата
В результате получится строка "aaabbbccc999"