我现在想知道是否有一种方法可以使用sprintf将格式说明符%u替换为空
我的问题是在sprintf中使用三元运算符,它将用一个值或不使用任何值替换%u。
下面是一个我正在尝试的例子:

int main (void)
{
   char mytab[10]={'\0'};
   uint_32 i=0;

   scanf("%u",&i);

   sprintf(mytab, "\"%u"\",i>0?i:/*Here is the syntax I want to find if it exists*/);
   printf("%s\r\n",mytab);

   return 0;
}

我试图获取的代码的结果是,例如,如果输入为1,则为“1”(如果输入为2…,则为“2”);如果输入为0,则为“”。
你对此有什么想法或解释吗提前谢谢。

最佳答案

我认为一个简单的if语句仍然是最干净的选择:

char mytab[10] = "\"\"";

if (n > 0) {
    snprintf(mytab, sizeof mytab, "\"%" PRIu32 "\"", n);
}

关于c - sprintf格式说明符不替换任何内容,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19541709/

10-12 18:04