ошибка: недопустимые операнды в двоичный код + char *

Возможный дубликат:
C Конкатенация строк

имеют следующий код:

char *doencode(const unsigned char *input, int length) { //irrelevant code } char *fname, *lname; char *encoded, *name; name = fname + "|" + lname; encoded = doencode(name, 30); 

и я получаю эту ошибку: недопустимые операнды в двоичные +

Как я могу комбинировать fname & | & lname?

Вы не можете конкатенировать char* и char[] ( "|" ) или любую перестановку с помощью + . strncat() используйте strncat() или snprintf() и убедитесь, что в буфере назначения достаточно памяти для хранения окончательной строки.

C не похож на java-скрипт. Это неверно в c:

 name = fname + "|" + lname; 

вы можете сделать это следующим образом:

 sprintf(name,"%s|%s", fname, lname); 

Указатель name должен указывать на достаточное пространство памяти.

 name = malloc(strlen(fname)+strlen(lname) + 2); 

+2: +1 для "|" и +1 для null в конце строки

пример

 #include #include #include int main() { char *fname, *lname, *name; printf("Enter your first name: "); scanf ("%ms", &fname); printf("Enter your last name: "); scanf (" %ms", &lname); name = malloc(strlen(fname)+strlen(lname) + 2); sprintf(name,"%s|%s", fname, lname); printf("name = %s\n",name); } 

Вы не можете просто добавлять строки в C, потому что строки на самом деле просто указывают на массивы символов. Что вам нужно сделать, так это выделить хранилище для новой строки и скопировать в нее две строки на символ.