[英]How can I populate a new array with strings passed as command line arguments in argv[]?
[英]How can i combine the effects of options passed in the command line on strings?
我有一个接收一些标志的函数,并根据这些标志格式化要打印为输出的行。 问题是,这些标志彼此独立。 换句话说,输出的格式可以与这些标志的组合一样多。
共有3个标志:bflag,nflag和sflag。 如果bflag为1,则nflag被忽略。 但是我们可以同时拥有b和s(或n和s),并且它们都以自己的方式操纵输出线。 如何在不将所有可能性嵌套在if语句中的情况下进行处理(这是我能想到的唯一方法)?
这是接收未格式化的字符串和标志的函数:
void outputLine(int *index, char buffer[], int bflag, int nflag){ //processes the options passed in the command line to create the output
if (nflag){
indexedLineout(index, buffer);
}
else if (bflag){
bprint(index, buffer);
}
else{//no options
printf("%s", buffer);
}
}
这是indexedLineout():
void indexedLineout(int *index, char buffer[]){//adds an index to the beginning of the line
printf ("%*d\t%s", 6, *index, buffer);
(*index)++;//increment the index
}
我认为显示bprint()并不重要,因为它对indexedLineOut()具有非常类似的行为。
如果我要添加上面提到的s标志,则如果先前的输出为空行,则基本上不会打印任何内容,并确保它也可以与其他标志一起使用,换句话说,请确保它可以打印编号的行,但不相邻的空行,我如何实现?
共有3个标志:bflag,nflag和sflag。 如果bflag为1,则nflag被忽略。 但是我们可以同时拥有b和s(或n和s),并且它们都以自己的方式操纵输出线。 如何在不将所有可能性嵌套在if语句中的情况下进行处理(这是我能想到的唯一方法)?
您具有由三个选项控制的两个单独的格式化功能,以一种应该相对干净的特定方式来处理。 您应该能够简单地遍历各行,对于每一行:
s
标志有效,然后跳过此行。 除此以外, n
标志有效而b
无效,则打印行号,否则 b
标志有效并且该行不为空,则打印行号。 我认为我什至不会将其拆分为单独的函数,但是如果您这样做,我建议选择完全适合该方案的函数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.