如何在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
)输出一条警告消息,说明使用变量指针作为格式字符串而不是实际的格式文字存在安全风险。