"%"가 뭐죠?*s"는 printf의 의미입니까?
코드 스니펫을 받았는데
printf("%.*s\n")
의 기능%.*s
심술궂은가요?
아스타리스크( )를 사용할 수 있습니다.*
)를 사용하여 너비 지정자/부호화를 형식 문자열로 하드 코딩하지 않고 에 전달합니다.
void f(const char *str, int str_len)
{
printf("%.*s\n", str_len, str);
}
자세한 것은 이쪽.
정수값 또는
*
최소 필드 폭을 지정합니다.결과는 필요에 따라 공백 문자(기본값)로 채워지고 오른쪽 정렬 시 왼쪽에, 왼쪽 정렬 시 오른쪽에 채워집니다.* 를 사용하는 경우, 폭은 type int 의 추가 인수로 지정됩니다.인수 값이 음수인 경우 - 플래그가 지정되고 필드 너비가 양수입니다(주의:최소 너비는 다음과 같습니다.값은 잘리지 않습니다).
.
뒤에 정수 또는 *가 붙거나 둘 다 변환 정밀도를 지정하지 않습니다.*가 사용되는 경우 정밀도는 int 유형의 추가 인수로 지정됩니다.이 인수 값이 음수일 경우 무시됩니다.숫자나 *가 사용되지 않으면 정밀도는 0으로 간주됩니다.정밀도의 정확한 효과는 아래 표를 참조하십시오.
따라서 두 변환 사양을 모두 사용해 보면
#include <stdio.h>
int main() {
int precision = 8;
int biggerPrecision = 16;
const char *greetings = "Hello world";
printf("|%.8s|\n", greetings);
printf("|%.*s|\n", precision , greetings);
printf("|%16s|\n", greetings);
printf("|%*s|\n", biggerPrecision , greetings);
return 0;
}
출력은 다음과 같습니다.
|Hello wo|
|Hello wo|
| Hello world|
| Hello world|
위의 코드가 올바르지 않은 것 같습니다만, (의 설명에 의하면).*
수단
너비는 형식 문자열에서 지정되지 않고 형식화해야 하는 인수 앞에 추가 정수 값 인수로 지정됩니다.'
그래서 인수로 사용할 수 있는 너비를 가진 문자열입니다.
참조: http://www.cplusplus.com/reference/clibrary/cstdio/printf/
.*
정밀도는 형식 문자열로 지정되지 않고 형식화해야 하는 인수 앞에 추가 정수 값 인수로 지정됩니다.
s
문자열 문자
언급URL : https://stackoverflow.com/questions/7899119/what-does-s-mean-in-printf
'IT이야기' 카테고리의 다른 글
char는 항상 8비트를 가지고 있습니까? (0) | 2022.06.20 |
---|---|
C는 그다지 어렵지 않습니다.void ( * ( * f [ ] ) ) (0) | 2022.06.20 |
왜 모바일에서는 키다운이 작동하지 않는가?버전 2 (0) | 2022.06.19 |
C 컴파일 오류: "변수 크기 개체를 초기화할 수 없습니다." (0) | 2022.06.19 |
Vue.js 구성 요소 데이터 값을 하위 구성 요소에 전달 (0) | 2022.06.19 |