У меня есть следующее заявление:
printf("name: %s\targs: %s\tvalue %d\tarraysize %d\n", sp->name, sp->args, sp->value, sp->arraysize);
Я хочу разбить это. Я пробовал следующее, но это не сработало.
printf("name: %s\t
args: %s\t
value %d\t
arraysize %d\n",
sp->name,
sp->args,
sp->value,
sp->arraysize);
Как я могу это разбить?
Ответы:
Если вы хотите разбить строковый литерал на несколько строк, вы можете объединить несколько строк вместе, по одной в каждой строке, например:
printf("name: %s\t" "args: %s\t" "value %d\t" "arraysize %d\n", sp->name, sp->args, sp->value, sp->arraysize);
источник
Компилятор C может склеивать смежные строковые литералы в один, например
printf("foo: %s " "bar: %d", foo, bar);
Препроцессор может использовать обратную косую черту в качестве последнего символа строки, не считая CR (или CR / LF, если вы из Windowsland):
printf("foo %s \ bar: %d", foo, bar);
источник
Просто некоторые другие варианты форматирования:
printf("name: %s\targs: %s\tvalue %d\tarraysize %d\n", a, b, c, d); printf("name: %s\targs: %s\tvalue %d\tarraysize %d\n", a, b, c, d); printf("name: %s\t" "args: %s\t" "value %d\t" "arraysize %d\n", very_long_name_a, very_long_name_b, very_long_name_c, very_long_name_d);
Вы можете добавлять вариации по теме. Идея состоит в том, что
printf()
спецификаторы преобразования и соответствующие переменные выстроены «красиво» (для некоторых значений «красиво»).источник
Де-факто стандартный способ разделения сложных функций в C - по аргументу:
printf("name: %s\targs: %s\tvalue %d\tarraysize %d\n", sp->name, sp->args, sp->value, sp->arraysize);
Или если вы:
const char format_str[] = "name: %s\targs: %s\tvalue %d\tarraysize %d\n"; ... printf(format_str, sp->name, sp->args, sp->value, sp->arraysize);
Вы не должны разбивать строку или использовать ее
\
для разрыва строки C. Такой код быстро становится полностью нечитаемым / неподдерживаемым.источник
Я не думаю, что использование одного
printf
оператора для печати строковых литералов, как показано выше, является хорошей практикой программирования; скорее, можно использовать фрагмент кода ниже:printf("name: %s\t",sp->name); printf("args: %s\t",sp->args); printf("value: %s\t",sp->value); printf("arraysize: %s\t",sp->name);
источник