如何將單引號連接到C中的字符數組?將單引號添加到C中的字符串中
例如:我有一個字符數組FileName
,值爲"hello world"
。我想用這樣的單引號括起你好世界:"'hello world'"
。該函數已通過FileName
,所以我無法將數組初始化爲所需的值。我必須在字符串的開始和結尾連接單引號。
如何將單引號連接到C中的字符數組?將單引號添加到C中的字符串中
例如:我有一個字符數組FileName
,值爲"hello world"
。我想用這樣的單引號括起你好世界:"'hello world'"
。該函數已通過FileName
,所以我無法將數組初始化爲所需的值。我必須在字符串的開始和結尾連接單引號。
爲了使它正常工作,調用者需要傳遞一個字符串,該字符串有足夠的空間用於兩個額外的引號。使這項工作的一種方式是分配一個臨時緩衝區,構建新的字符串那裏,回其複製到原始字符串,像這樣:
void add_quotes(char *s) {
size_t len = strlen(s);
char tmp[len+3];
tmp[0] = '\'';
strcpy(tmp+1, s);
tmp[len+1] = '\'';
tmp[len+2] = '\0';
strcpy(s, tmp);
}
這種分配在自動存儲一個臨時緩衝區(即在堆棧)。如果您的字符串s
可能較長,請考慮使用動態內存分配代替:
void add_quotes(char *s) {
size_t len = strlen(s);
char *tmp = malloc(len+3);
tmp[0] = '\'';
strcpy(tmp+1, s);
tmp[len+1] = '\'';
tmp[len+2] = '\0';
strcpy(s, tmp);
free(tmp);
}
您嘗試了什麼?你知道[snprintf(3)](http://man7.org/linux/man-pages/man3/snprintf.3.html)嗎? – 2014-10-17 20:00:53
或[strcat](http://www.techonthenet.com/c_language/standard_library_functions/string_h/strcat.php)? – aruisdante 2014-10-17 20:03:02
strcat不起作用。當我嘗試strcat時出現分段錯誤。 – user3592590 2014-10-17 20:05:27