rid*_*elf 3 c arrays string function
我有一个函数stuff(),它返回一个要打印的字符串main.
#include <stdio.h>
char* stuff(char* thing) {
return ("this and %s", thing);
}
int main() {
char* thing = "that";
printf("%s\n", stuff(thing));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我期待着
这个和那个
在程序运行时打印,但我看到:
那
是否有人能够指导我完成程序实际执行的操作,更重要的是,我做错了什么?
您正在使用带有逗号运算符的表达式作为函数的返回值.
逗号运算符两个操作数(在逗号的任一侧上的表达式),并且结果表达的是评估第二表达式的结果:在逗号的右手侧的表达式.在您的情况下,第二个表达式是结果,因此作为函数的返回值返回.
因此,函数中return语句的结果等效于:
return thing;
Run Code Online (Sandbox Code Playgroud)
这就是你的函数的结果是字符串的原因"that".
您似乎期望printf从此表达式中获得某种样式字符串格式:
("this and %s", thing);
Run Code Online (Sandbox Code Playgroud)
但它不会像这样工作:它只是一个使用逗号运算符的表达式.
在C中,连接字符串并不容易.查看标准字符串strcat系列函数(请参阅strncat 此处的文档)或其中一个sprintf函数(snprintf 此处为文档).