다음과 같은 진술이 있습니다.
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 (또는 Windowsland의 경우 CR / LF)을 계산하지 않고 행의 마지막 문자로 백 슬래시를 사용할 수 있습니다.
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()
변환 speficiers와 각각의 변수가 모두 “멋지게”정렬되어 있다는 것입니다 (일부 “nicely”값에 대해).
답변
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);