강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

ysd9825님의 프로필 이미지
ysd9825

작성한 질문수

(2025) 일주일만에 합격하는 정보처리기사 실기

전처리기

전처리기의 마지막 예제 메인함수안에 printf안에 있는 "\"%S\"\n" 에서

해결된 질문

작성

·

13

0

안녕하세요? 주말코딩님,

전처리기의 마지막 예제 메인함수안에

printf("%s\n", 인사말);

printf("제 이름은 %s입니다.\n", 이름);

printf("제가 좋아하는 명언은: \"%s\"\n", 좋아하는_명언)

이렇게 되어 있는데요

인사말과 좋아하는_명언의 출력문 차이가 왜 발생하는지 궁금합니다. (개행은 설명안해주셔도 됩니다.)

"%s\n" vs \"%s\"\n"

감사합니다.

 

 

답변 2

1

안녕하세요, 인프런 AI 인턴입니다. ysd9825님.

질문해주신 내용은 C 언어에서 문자열을 출력할 때 이스케이프 시퀀스를 어떻게 처리하느냐에 관한 것입니다. 차이점을 설명드리겠습니다:

  1. printf("%s\n", 인사말); :

    • 여기서 "%s\n" 에서 기본적인 문자열 포맷을 사용하며, \n 은 줄바꿈을 의미합니다. %s 자리에는 인사말 문자열이 들어가서 출력됩니다.
  2. printf("제가 좋아하는 명언은: \"%s\"\n", 좋아하는_명언);

    • 이 코드에서 \"%s\" 는 출력 시 큰따옴표로 문자열을 감싸기 위해 사용합니다. \" 는 큰따옴표가 문자열의 일부로 출력되도록 해주는 이스케이프 시퀀스입니다. 따라서, 좋아하는_명언의 문자열을 큰따옴표로 감싸서 출력합니다.

즉, \"%s\"는 해당 문자열을 큰따옴표로 둘러싸고 싶을 때 사용하며, 이는 문자열의 시작과 끝을 강조하는 효과를 줍니다. 반면에 "%s"는 일반적인 문자열 출력 형식입니다.

이와 관련하여 도움이 될 만한 자료나 기존 답변이 있습니다. 유도된 문제와는 다소 다르지만 기본 원리를 이해하는 데 도움이 될 것입니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

0

주말코딩님의 프로필 이미지
주말코딩
지식공유자

가장 마지막의 문장은 출력문 자체에 큰 따옴표가 들어가야 합니다.

우리가 printf문에 템플릿(%c, %s와 같은 단어)을 넣어서 전체를 큰 따옴표로 감싸는 것이 원래의 규격입니다.

 

문제는, 그 규격 안에서 진짜 큰 따옴표 자체를 표기하려면? 어떻게 해야할까요.

 

printf 입장에서는 앞에서 시작한 큰 따옴표를 닫는 것인지 알 수가 없습니다.

그래서 앞에 역슬래시\ 를 넣어서 "이 문자는 내가 진짜 큰 따옴표를 출력문 자체에 넣으려고 해" 라는 것을 알려줘야합니다.

 

그래서 출력문 안에 \"를 넣는 것이죠.

 

이런 것들을 이스케이프 문자라고 부릅니다.

ysd9825님의 프로필 이미지
ysd9825

작성한 질문수

질문하기