programing

printf 문자열, 가변 길이 항목

prostudy 2022. 7. 30. 11:21
반응형

printf 문자열, 가변 길이 항목

#define SIZE 9
int number=5;
char letters[SIZE]; /* this wont be null-terminated */
... 

char fmt_string[20];
sprintf(fmt_string, "%%d %%%ds", SIZE);
/* fmt_string = "%d %9d"... or it should be */

printf(fmt_string, number, letters);

더 좋은 방법이 있을까요?

특별한 형식 문자열을 작성할 필요가 없습니다. printf를 사용하는 경우 파라미터(값 앞에 있음)를 사용하여 정밀도를 지정할 수 있습니다..*형식 태그의 정밀도로 지정합니다.

예를 들어 다음과 같습니다.

printf ("%d %.*s", number, SIZE, letters);

주의: 너비(필드의 최소 너비)와 정밀도(인쇄할 최대 글자 수)에는 차이가 있습니다. %*s너비를 지정합니다.%.s에 정밀도를 지정합니다.(또한%*.*단, 2개의 파라미터가 필요합니다.하나는 폭에 1개는 정밀도에 1개입니다.)

printf man 페이지(man 3 printfLinux의 경우) 및 특히 필드 폭과 정밀도에 대한 섹션을 참조하십시오.

10진수 문자열 대신 "*" 또는 "*m$"(일부 10진수 정수 m의 경우)로 입력하여 다음 인수 또는 m-th 인수 각각에서 정밀도가 지정되도록 지정할 수 있습니다.이 인수는 int 유형이어야 합니다.

미지의 함수는 입니다.첫 번째 파라미터는**char이 기능은malloc부기 작업을 하지 않아도 됩니다.잊지 말고free스트링을 입력합니다.

char *fmt_string;

asprintf(&fmt_string, "%%d %%%ds", SIZE);
printf(fmt_string, number, letters);
free(fmt_string);

는 사용 예시입니다.

언급URL : https://stackoverflow.com/questions/5932214/printf-string-variable-length-item

반응형