gpt4 book ai didi

c - 返回字符串的函数的意外输出

转载 作者:太空狗 更新时间:2023-10-29 15:52:00 25 4
gpt4 key购买 nike

我有一个函数 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;
}

我很期待

this and that

在程序运行时打印,但我看到的是:

that

是否有人能够向我介绍该程序实际在做什么,更重要的是,我做错了什么?

最佳答案

您正在使用带有逗号运算符 的表达式作为函数的返回值。

逗号运算符计算两个操作数(逗号两边的表达式),表达式的结果是计算第二个表达式的结果:右边的表达式逗号。在您的例子中,第二个表达式是结果,因此作为函数的返回值返回。

因此函数中 return 语句的结果等同于:

return thing;

这就是为什么您的函数的结果是字符串 "that"

你似乎期望从这个表达式中得到某种 printf 风格的字符串格式:

("this and %s", thing);

但它不会像这样工作:它只是一个使用逗号运算符的表达式。

在 C 语言中,连接字符串并不那么容易。查看标准字符串 strcat 函数族(参见 strncat here 的文档),或 sprintf 函数族之一(文档对于 snprintf here )。

关于c - 返回字符串的函数的意外输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32062139/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com