如何在C中的开关中使用格式说明符
我试图在开关中使用格式说明符,但编译器返回错误:表达式结果未使用如何在C中的开关中使用格式说明符,c,C,我试图在开关中使用格式说明符,但编译器返回错误:表达式结果未使用 const char* text; const char* input; int i=2; input = "orange"; switch(i){ case 1: text = "%s is color", input; break; case 2: text = "%s is fruit", input; break; default: break;
const char* text;
const char* input;
int i=2;
input = "orange";
switch(i){
case 1:
text = "%s is color", input;
break;
case 2:
text = "%s is fruit", input;
break;
default:
break;
}
你可能想要这样的东西:
const char* text;
const char* input;
int i=2;
input = "orange";
switch(i) {
case 1:
text = "%s is color";
break;
case 2:
text = "%s is fruit";
break;
default:
break;
}
printf(text, input);
你可能想要这样的东西:
const char* text;
const char* input;
int i=2;
input = "orange";
switch(i) {
case 1:
text = "%s is color";
break;
case 2:
text = "%s is fruit";
break;
default:
break;
}
printf(text, input);
您想要使用或snprintf
char text[128];
const char* input;
int i=2;
input = "orange";
switch(i){
case 1:
sprintf(text, "%s is color", input);
break;
case 2:
sprintf(text, "%s is fruit", input);
break;
default:
break;
}
您想要使用或snprintf
char text[128];
const char* input;
int i=2;
input = "orange";
switch(i){
case 1:
sprintf(text, "%s is color", input);
break;
case 2:
sprintf(text, "%s is fruit", input);
break;
default:
break;
}
首先,您必须为如下字符串分配内存:char text[128];字符输入[128];然后,您可以像这样使用sprinf示例:sprintf(文本,“%s是颜色”,input);实际上还不完全清楚你想要实现什么。请告诉我们您打算如何处理
文本
。格式说明符功能不是语言级别的东西,它只是由printf()
函数系列实现的。一般来说,在C语言中,如果希望发生“复杂”的事情(例如将各种值转换为字符串表示),则需要调用实现该功能的函数代码>和类似的语句:这是胡说八道。你的编译器告诉你了。强烈建议使用sprintf()
格式化字符数组的内容,然后您可以将该数组的地址分配给input
或text
首先,您必须为以下字符串分配内存:char text[128];字符输入[128];然后,您可以像这样使用sprinf示例:sprintf(文本,“%s是颜色”,input);实际上还不完全清楚你想要实现什么。请告诉我们您打算如何处理文本
。格式说明符功能不是语言级别的东西,它只是由printf()
函数系列实现的。一般来说,在C语言中,如果希望发生“复杂”的事情(例如将各种值转换为字符串表示),则需要调用实现该功能的函数代码>和类似的语句:这是胡说八道。你的编译器告诉你了。强烈建议使用sprintf()
格式化字符数组的内容,然后您可以将该数组的地址分配给input
或text
,为了使其有意义,text
必须指向分配的内存,并且它不能是const char*
。这不起作用,文本
未初始化,可能这不是OP想要的。关于文本
?@Lundin谢谢。我也发现了它,正准备修复它。文本在开关盒内被初始化,我需要在开关盒外打印它。为了让它有意义,text
必须指向分配的内存,它不能是const char*
。这不起作用,文本
未初始化,可能这不是OP想要的。关于文本
?@Lundin谢谢。我也发现了它,正准备修复它。文本在开关盒内被初始化,我需要在开关盒外打印它。您可能想在default
盒中为text
分配一些内容(或者省略default:
并在声明时初始化text
)。这将导致一些编译器,类似于gcc
输出一条警告消息,说明使用变量指针作为格式字符串而不是实际格式文本的安全风险。您可能希望在default
情况下为text
赋值(或省略default:
并在声明中初始化text
)。这将导致一些编译器(如gcc
)输出一条警告消息,说明使用变量指针作为格式字符串而不是实际的格式文字存在安全风险。