2011-01-05 61 views
2

我有一個字符串,我宣佈它作爲的char * cQuery追加字符串

char *cQuery = "My Name Is "; 

,我要追加另一個字符串。在Objective-C中,我會說stringByAppendingString:newString

我有點生鏽,C在Objective-C類中使用。誰能幫我嗎?

感謝

回答

3

您可以使用從string.h中的strcat方法,但必須注意的是,目標字符串必須有足夠的規模,以保持新組合的字符串。

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

strcpy(destination, cQuery); 
strcat(destination, anotherStr); 
+0

這很好,但我們不知道字符串的大小。所以我們不能假設它的長度。 – 2011-01-07 14:30:39

1

使用strcat看到幫助here

+0

我這樣做,我得到節目接收信號:「EXC_BAD_ACCESS」。 – 2011-01-05 19:56:14

+0

@Cocoa Dev:你不能附加到字符串文字。 「我的名字是」是一個字符串文字,並存儲在只讀存儲器中。 – 2011-01-05 20:16:47

2

我會用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); 
} 
3

通過聲明字符串像這樣,您聲明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");