У меня есть функция, которая получает некоторые флаги и на основе этих флагов форматирует строку для вывода в качестве вывода.Проблема в том, что эти флаги не зависят друг от друга.Другими словами, выходные данные могут быть отформатированы столько раз, сколько существует комбинаций этих флагов.
Есть 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, о котором я упоминал выше, это в основном ничего не печатает, если предыдущий вывод был пустой строкой,и убедитесь, что он также работает в сочетании с другими флагами, другими словами, убедитесь, что он может печатать пронумерованные строки, но не соседние пустые, как я могу этого добиться?