ProgramingTip

C에서 긴 printf 문을 여러 줄로 나눌 수 있습니까?

bestdevel 2020. 10. 11. 10:55
반응형

C에서 긴 printf 문을 여러 줄로 나눌 수 있습니까?


다음 전시가 있습니다.

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);

다른 서식 옵션 :

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("foo: %s "
       "bar: %d", foo, bar);

전처리는 CR (또는 Windowsland의 경우 CR / LF)을 계산하지 않고 행의 마지막 문자로 백 슬래시를 사용할 수 있습니다.

printf("foo %s \
bar: %d", foo, bar);

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); 

참고 URL : https://stackoverflow.com/questions/1752079/in-c-can-a-long-printf-statement-be-broken-up-into-multiple-lines

반응형