【发布时间】:2021-06-25 20:45:52
【问题描述】:
我一直坚持从 const char* 的 c 函数调用和 sprintf 函数中获取一个简单的字符串,该函数有 10 次调用与格式参数相同的函数。但是 sprintf 在调用函数 u 时总是给出最后一个相同的参数值,即:“MM”
main()
{
char test[1000];
int x=sprintf(test,"%s %s",u(17,0),u(18,1));
printf(test);
}
const char *u(int a,int b)
{
static char retStr[700];
static char retStr1[700];
const char *c;
char *d[]={"S","M","T","W","F"};
if(b==0) c="red";
if(b==1) c="blue";
if(a==17 && b==0) {
sprintf(retStr1,"<font color=%s>%s</font>",c,d[0]);
strcpy(retStr,retStr1);
return retStr;
}
if(a==18 && b==1) {
sprintf(retStr1,"<font color=%s>%s</font>",c,d[1]);
strcpy(retStr,retStr1);
return retStr;
}
return "";
}
【问题讨论】:
-
u(18,)?这是什么?请发帖minimal reproducible example,并描述这件事应该做什么。 -
注意,同时标记 C 和 C++ 并没有帮助。 C++ 解决方案只会说废弃所有这些并使用
std::string,而 C 解决方案会非常不同。所以选择你想要的。 -
已更正,仅限 C,代码正在生成 HTML 字符串。一行包含具有 10 个字符串参数的 sprintf,具有相同的函数并返回不同的字符串和颜色。
标签: c