字符串文字可以与char *连接吗?

时间:2019-02-20 04:03:35

标签: c string-literals char-pointer

我知道在C中,相邻的字符串文字是连接在一起的。我想知道,相邻的字符串文字是否与char * s串联在一起?

我问这个问题的原因是因为我想将两个字符串的串联传递给perror(),并且其中一个字符串是事先未知的,因此我必须使用char*

perror("error opening " "file.txt");  // string literals are concatenated

char* filename = "file.txt";  // or some other file
perror("error opening " filename);    // will this work?

2 个答案:

答案 0 :(得分:4)

不。在翻译(编译)过程中执行字符串文字的串联。执行程序时,必须在程序内完成您请求的操作。没有自动执行此操作的规定;您必须编写代码来为结果字符串分配空间并执行串联。

答案 1 :(得分:3)

不。串联的相邻字符串文字是编译器的功能,它将相邻的字符串文字视为一个字符串文字,以帮助编码人员编写可读代码(如果大的字符串文字不能很好地放在一行上)。

C作为一种语言没有连接运算符,因此最接近它的是函数(strncatstrcatstrcpymemcpy)。