IT이야기

C에서 긴 인쇄문을 여러 줄로 나눌 수 있는가?

cyworld 2022. 5. 8. 22:06
반응형

C에서 긴 인쇄문을 여러 줄로 나눌 수 있는가?

나는 다음과 같은 진술이 있다.

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

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

다른 형식 지정 옵션:

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()변환 스피피저와 각 변수는 모두 "supply"로 정렬되어 있다(일부 "supply" 값인 경우).

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

반응형