형식_문자열,format_string

AKA 형식 스트링, 포맷 스트링, 포맷 문자열

Topics
specifier
{
가능한번역
지정자
지시자
...

이건 C style?(정확한 이름은 모르겠는데 ... 암튼 퍼센트 기호 뒤에 라틴알파벳 하나) ...가 여러 언어에서 많이 쓰이는 듯
타입,type에 따라
문자,character
%c
문자열,string
%s
정수,integer
%i / %d
부동소수점,floating_point
%f - 일반적
%e - 지수형태로
%g - f, e 중에 짧은 거?
길이,lenght를 어떻게? align은 어떻게?
...
어떻게 보여줄 지 .... 대충 생각인데 rsrc 찾아 정확히 서술

Cmp
약간 비슷한느낌의것?? 이 escape_sequence of string_literal

Ggl:format string specifier
}

QQQ 이렇게 치환,substitution하는 게 string_interpolation ? chk
{

파이썬,Python % 연산자

파이썬,Python f-string ...pagename f문자열,f-string ?
{
PEP 498 – Literal String Interpolation | peps.python.org
https://peps.python.org/pep-0498/

PEP 701 – Syntactic formalization of f-strings | peps.python.org
https://peps.python.org/pep-0701/

}




1. C언어의 경우

출력 printf(), 입력 scanf() 등에 쓰인다.

정수일 때,

%u unsigned int
%ld long
int와 long이 같은 크기라면 %d도 충분하지만, 다를 수 있다면 long에는 %ld를 쓸 것.

Prefix: 크기(size)
l: long (int)
h: short (int)
L: long double
* char, int, float, double은 size를 가지지 않는다.
make it clear - l, h, L prefix를 가지지 않는다는 뜻?

%lx long (hex)
%lo long (oct)
%hd short (dec)
%ho short (oct)

u: unsigned

%lu unsigned long
%lld long long
%llu unsigned long long


c 문자형
d 정수형
f 실수형
...

너비(minium width)
숫자

정확도(precision)
점 뒤의 숫자
명시되지 않으면 6자리

플래그(flag)
0: 너비만큼 출력하며, 앞을 0으로 채움
-: 왼쪽 정렬(left justify); 내용을 왼쪽에 나타내고 오른쪽 부분은 공백

2. 입력 함수에 쓰일 때

(scanf 등에서)

%c는 여백 문자를 포함하여 한 글자를 읽는다.
문자 자료 앞의 여백을 무시하려면 앞에 공백을 두어야 한다.
" %c"

%s : 입력은 첫 화이트스페이스가 아닌 글자(first non-whitespace character)로 시작하며, 다음 화이트스페이스 글자가 오기 전까지의 모든 내용을 포함함.

너비 지정자는 출력 함수에 쓰일 때는 몇 칸에 맞출지를 지정하지만, 입력 함수에 쓰일 때는 최대 읽을 글자수를 명시한다. CHK

너비(maximum width) 지정자가 없으면 여백을 만날 때까지 읽는다.
너비는 최대 몇 글자를 읽을지를 명시한다.

형식 문자열을 여백으로 마치면 프로그램은 정지 상태가 된다. (중대한 오류)

scanf("%*d %*d %d", &n);
은 앞의 숫자 두 개를 skip하고 세번째 숫자를 읽는다.

3. 공백

형식 문자열 내 공백은 입력과 출력에서 서로 다르게 취급된다.
출력 함수의 경우 단순히 출력 스트림으로 나간다(복사된다).
입력 함수의 경우 형식 스트링의 하나 이상의 공백은 입력 스트림에서 0개 이상의 공백을 읽어서 버리도록 한다.
따라서 형식스트링의 임의 길이의 연속 공백 문자열은 입력 스트림의 임의 길이의 연속 공백 문자열과 매치된다. (길이가 달라도 좋음.)

scanf는 오류 발생 시 유효하지 않은 데이터를 입력 스트림에 그대로 둔다.
이것을 제거하려면 다음 FLUSH();를 쓴다.
#define FLUSH while(getchar() != '\n')

(C Primer Plus 5e, Forouzan 2e)