Возможный дубликат:
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, потому что строки на самом деле просто указывают на массивы символов. Что вам нужно сделать, так это выделить хранилище для новой строки и скопировать в нее две строки на символ.