如果我们想在那个地方什么都不打印,在printf()中为%c传递什么?

时间:2019-03-24 09:32:02

标签: c printf

我正在编写一个代码,其中必须根据某些条件显示某个字符,并且如果不满足该条件,则什么都不显示(甚至不显示空格)。我正在将printf()与{{1} }转换说明符。当我不想打印任何内容时,我为%c传递了'\0',但是那是打印一个空格。我应该为我的目的传递什么?

5 个答案:

答案 0 :(得分:3)

%c的{​​{1}}规范相对应的参数不能传递任何值,导致没有字符被打印。

要不打印字符,一定不要执行具有printf规范的printf

答案 1 :(得分:2)

您可以使用无字符的空字符串来%s,例如:

printf("foo%sbar", condition ? "+" : "");

如果字符在char变量中,则:

printf("foo%.1sbar", condition ? &ch : "");

答案 2 :(得分:0)

您可以分割语句,例如,如果您有这样的语句:

printf(" %d  %c %s \n, par1, par2 par3);

您可以将其划分如下:

printf("%d", par1);
if( a_condition_is_true) printf("%c", par2);
printf("%s\n", par3);

答案 3 :(得分:0)

您可以使用ASCII控制代码,例如BEL:'\a'。这会使可能听到虚假声音的用户和其他可能不理解该代码为何试图引起用户注意的编码人员感到困惑。

最好用两个不同的printf()语句编写条件。这种解决方案使代码更具可读性和可维护性。

答案 4 :(得分:0)

打印空格(实际上不打印任何内容)建议:

printf( "%c", ' ' );

-或-

putc( ' ', stdout );

-或-

putchar( ' ' );

-或-

fputc( ' ', stdout );

或者要不打印任何内容,可以使用ANSI转义序列:

printf( "/x2b[1C\n" );

这将使光标向右移动1个空格而不打印任何内容