我现在想知道是否有一种方法可以使用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/