我必须修改现有代码,其中有很多像这样的fprintf语句
fprintf (stdout, "%-30.30s",reason);
但是现在如果用户在主参数中传递了“T”,那么我将用分隔符“|”打印输出的红外线
我的文件中有几个fprint。
目前,如果用户想要管道分离输出,我已经采用了一个设置为true的标志。
if(flag)
fprintf (stdout, "%-30.30s|",reason);
else
fprintf (stdout, "%-30.30s",reason);
请建议我是否有其他更好的方法来实现这一目标。请注意,我的文件中有几个fprintf。
谢谢!!!
答案 0 :(得分:4)
char *separator = flag ? "|" : "";
fprintf(stdout, "%-30.30s%s", reason, separator);
答案 1 :(得分:1)
一个班轮:
fprintf (stdout, "%-30.30s%c",reason,(flag?'|':'\0'));
对于代码中的多个fprintf,您可以简单地编写一个宏或内联函数,它根据一组参数进行打印。编写一个包装函数并使用有效参数调用该包装函数。根据您的程序规范(您的问题不清楚),您必须找到编写包装函数的最佳方法。
例如:
将所有fprintf内容放在这样的包装器函数中,并仅使用标志和案例号进行调用。
//Illustrative purposes only
void wrapper(int flag, int caseno,char* reason)
{
if(reason!=NULL)
switch(caseno)
{
case 1:
fprintf(stdout,"xyz%s",reason);
break;
case 2:
fprintf(stdout,"abc%s",reason);
break;
...
}
fprintf (stdout, "%c",(flag?'|':'\0'));
return;
}
由于您向o / p写错误,我建议您使用stderr
代替stdout
。