프로그래밍

c에서 %c 와 %s를 나누는 이유가 뭐야?

이제막 배우기 시작했는데 배우면서 궁금한게 있어서 물어봐

 

단순 출력을 원하는거면 ("%c\n", 'a'); 든  ("%s\n", "a"); 든 똑같은 출력값이 나올텐데 문자와 문자열을 나누는 이유가 궁금해

9개의 댓글

2023.08.18

"a"와 'a'는 다름

 

'a'는 1바이트짜리 정수고

"a"는 'a'와 0이 연속적으로 있는 배열의 주소값이야

 

이 때문에 문자열 포맷팅할 때 그 방법이 다르게 나오니 따로 구분짓는 것임

0
2023.08.18
@개붕이는끝

아 무슨말인지 이해했어 그래서 하기전에 진법이랑 이것저것 설명했던거구나 단순출력값만 생각하면 안되는거였네 호기심해결!!!

0

c언어가 문자를 출력하는 방법을 문자와 문자열 2가지 방법으로 나누지 않고 문자열로만 지정하면 더 편할 것 같은데 굳이 구분하는 이유가 궁금한거지?

 

c언어가 나올 당시에는 메모리가 제한적이어서 조금이라도 아낄 필요가 있었기 때문에 나눠놓은거야

 

문자를 출력하려면 시스템이 메모리에 접근해 데이터를 읽어와 출력하겠지?

 

그런데 문자는 시스템에게 메모리 어디에 있는거 하나만 읽어와 출력하라고 하면 되지만,

문자열은 배열의 형태로 메모리에 연속되어 저장되어 있으니 시스템에게 메모리의 어디서부터 어디까지 읽어야하는지 알려줄 필요가 있어

 

그런데 매번 문자열의 크기를 지정하기는 어렵잖아

그래서 문자열의 끝을 알리기 위해 \0을 포함하기로 했어

시스템에게 메모리 어디서부터 \0을 만날때까지 읽어와라고 명령하게 된거지

 

그래서 만약 a를 문자열로 저장하면 실제 메모리에 저장되는 배열은 a\0가 되는거지

 

문자 a만 저장할 때와 다르게 \0가 메모리 한자리를 더 차지하게 되는 데 이걸 아끼려고 문자와 문자열을 구분짓게 한 거야

 

메모리 1번지를 읽어와 랑

메모리 1번지부터 \0을 만날때까지 읽어와 라는 연산의 차이를 아끼려는 것도 있어

1
2023.08.18
@수능백번보면백수

지금도 그 구분이 의미가 있는거야? 귀찮을땐 그냥 %s 로 퉁쳐버려도 되는거야?

0
@코싸멘뚜

그렇게해도 프로그램 작동 자체에는 무관하긴 해

실제로 파이썬은 문자와 문자열의 구분이 없어

0
2023.08.18
@수능백번보면백수

아하 100점짜리 설명 감사합니다!

0
2023.08.18
@수능백번보면백수

섹시해

0
2023.08.19
@코싸멘뚜

char하나뿐이라면, %s로 쓰면 \0나올 때 까지 계속 읽어서 char 뒤가 NULL이 아니라면 이상한 값이 튀어나와서 머리 싸매야하는 일이 생길 수 있어. 앵간하면 자료형 구분해서 써

0
2023.08.18

스트링 뒤에 공간있어요

0
무분별한 사용은 차단될 수 있습니다.
번호 제목 글쓴이 추천 수 날짜 조회 수
5709 [프로그래밍] 패스트 캠퍼스 <---- 얘내는 가격 인상 원툴임? 5 조강현 0 2 일 전 277
5708 [프로그래밍] 클라가 파이썬 셀레니움같은거 써서 클릭하고 그러는걸 감지 ... 5 리옴므 0 3 일 전 201
5707 [프로그래밍] leetcode 50일 달성 1 JimmyMcGill 1 3 일 전 174
5706 [프로그래밍] 그냥 개인공부용 git 만들건데 5 년째재수강 0 3 일 전 263
5705 [프로그래밍] html 자바스크립트 질문 19 책걸이 0 4 일 전 303
5704 [프로그래밍] 아니 시바 이게 무슨일이야 4 인간지표 0 5 일 전 320
5703 [프로그래밍] 아두이노 키트 아무것도 모르고 사도 될까? 6 그것 0 5 일 전 262
5702 [프로그래밍] 횽들 Vimeo에 올라가있는 동영상의 원본크기를 확인할 수 있... 13 카뜨만두 0 5 일 전 186
5701 [프로그래밍] c# 이벤트와 델리게이트 13 RX7900XTX 0 8 일 전 306
5700 [프로그래밍] Aws 람다에 파이썬 올려서 결과 받아오는데 11 아르피쥐 0 9 일 전 344
5699 [프로그래밍] 마리아DB mediumtext 그냥 쓰고 싶은데 21 잉텔 0 10 일 전 221
5698 [프로그래밍] 안드로이드 씹뉴비 질문이요 2 집에가게해줘 0 10 일 전 126
5697 [프로그래밍] c언어 7년했는데 이런게 되는거 처음알았음.. 4 케로로중사 0 11 일 전 897
5696 [프로그래밍] 파이썬 1도 모르는데 GPT로 프로그램 뚝딱 만듬 2 푸르딩딩 1 15 일 전 746
5695 [프로그래밍] 담주 면접잡혔는데 8 삐라루꾸 0 15 일 전 504
5694 [프로그래밍] 아두이노 부트로더를 구웠는데.. 4 렙이말한다ㅡ니가옳다 0 15 일 전 235
5693 [프로그래밍] IOS 개발자 있나여? 1 g4eng 0 18 일 전 260
5692 [프로그래밍] 시스템 디자인 인터뷰 준비 도움좀!!! 1 Nognhyup 0 18 일 전 205
5691 [프로그래밍] 최근에 vscode 쓴 사람 도움! 3 172102 0 19 일 전 526
5690 [프로그래밍] 책을 또 사버리고 말았다... 1 찰나생멸 2 20 일 전 526