char * cQuery добавить строку - PullRequest
2 голосов
/ 05 января 2011

У меня есть строка, и я объявил ее как

char *cQuery = "My Name Is ";

и я хочу добавить еще одну строку. В target-c я бы сказал stringByAppendingString: newString

Я немного устала от использования C в классах Objective-C. Кто-нибудь может мне помочь?

Спасибо

Ответы [ 4 ]

3 голосов
/ 05 января 2011

Объявляя строку следующим образом, вы объявляете cQuery константной строкой.

// You can change cQuery using strcat, snprintf etc.
char *cQuery = "My Name Is ";

// Error! Cannot do this.
// strcat(cQuery, "John");

Если вы хотите, чтобы cQuery был модифицируемым, вам нужно создать массив символов с явным размером, а затем скопировать начальное содержимое в эту строку.

char cQuery[128];

// use snprintf or strcpy to initialize
strcpy(cQuery, "My name is ");

// now you can modify cQuery by calling strcat.
strcat(cQuery, "Funny Name");
3 голосов
/ 05 января 2011

Вы можете использовать метод strcat из string.h, но следует помнить, что строка назначения должна быть достаточного размера для хранения вновь объединенных строк.

char destination[100];
char *cQuery = "My Name Is ";
char *anotherStr = "Peter";

strcpy(destination, cQuery);
strcat(destination, anotherStr);
2 голосов
/ 05 января 2011

Я бы использовал snprintf. (Это одна из моих любимых функций!)

Как это:

void add_it(const char *name)
{
    char buffer[256];
    const size_t buffer_len = sizeof(buffer);

    snprintf(buffer, buffer_len, "My Name Is %s", name);
    do_something(buffer);
}
1 голос
/ 05 января 2011

Использование strcat см. Справку здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...