我知道在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?
答案 0 :(得分:4)
不。在翻译(编译)过程中执行字符串文字的串联。执行程序时,必须在程序内完成您请求的操作。没有自动执行此操作的规定;您必须编写代码来为结果字符串分配空间并执行串联。
答案 1 :(得分:3)
不。串联的相邻字符串文字是编译器的功能,它将相邻的字符串文字视为一个字符串文字,以帮助编码人员编写可读代码(如果大的字符串文字不能很好地放在一行上)。>
C作为一种语言没有连接运算符,因此最接近它的是函数(strncat
,strcat
,strcpy
,memcpy
)。