PGR21.com
이전 질문 게시판은 새 글 쓰기를 막았습니다. [질문 게시판]을 이용바랍니다.
Date 2011/11/29 12:58:13
Name 망디망디
File #1 6th_7th_week(updated)[1].jpg (18.5 KB), Download : 3
Subject C 질문이요


#include <stdio.h>
int main(void)
{
char str[ ]="Good morning!";
printf("배열 str의 크기: %d \n", sizeof(str));
printf("널 문자 문자형 출력: %c \n", str[13]);
printf("널 문자 정수형 출력: %d \n", str[13]);
str[12]='?';
printf("문자열 출력: %s \n", str);
return 0;
}

여기서

str[12]='?';

이건 무엇을 뜻하나요  ?

그리고 중간에 printf에서 널 문자 문자형 출력이랑 정수형 출력... 차이가 무엇이죠 ? 왜 출력값이 저런가요?

통합규정 1.3 이용안내 인용

"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
무한의 질럿
11/11/29 13:05
수정 아이콘
str[12]='?'는 Good morning!의 12번째 문자인 !에 ?을 대입하는 명령입니다
str[13]은 문자열의 맨끝을 의미하며 0을 리턴합니다. 쉽게 말해 Good morning! 문자열 다음에 문자열의 끝을 의미하는 보이지 않는 문자가 있다고 생각하시면 편합니다. 상수로 치환하면 0을 리턴하죠.
11/11/29 13:07
수정 아이콘
문자형 배열은 인덱스에 접근해서 해당 인덱스의 문자하나를 바꿀 수 있습니다

str[12] = '?'; 란 것은 배열의 13번째(배열 인덱스 시작이 0번부터 인건 아시죠? [12]면 13번째 원소가 됩니다)원소의 내용을 ?로 바꾼다는 의미입니다.

널문자는 문자열의 마지막에 들어가는 문자인데 이것은 ABCD..1234 같은 문자의 표현 방식이 없습니다. 그래서 출력된 것 처럼 아무것도 찍히지 않는데 널문자는 아스키 코드에 존재합니다. C언어책 후반부 부록에 보시면 아스키 코드표가 있을텐데 그걸 찾아보시면 되고 널문자의 아스키코드 값은 0입니다.
망디망디
11/11/29 13:09
수정 아이콘
아 빠르네요 덜덜... 감사합니다
될대로되라
11/11/29 13:43
수정 아이콘
문자열을 array나 pointer 변수에 넣어두면 컴퓨터는 그 끝을 모릅니다.
그래서 문자열이 끝났다라는 표시로 끝에 NULL (integer로 0)을 넣어둡니다.
(파일의 경우는 EOF 를 넣어두면 파일의 끝으로 인식하죠.)
예를 들어 char str[14]="12345678901234" 하면 나중에 문제가 될 수 있습니다.
str[14]는 14개의 문자를 저장할 수 있지만 예처럼 14개 다 써버리면 NULL이 들어갈
자리가 없으니 오류가 발생할 여지가 생기죠.
저기에 str[10]=NULL; 또는 str[10]=0; 을 추가하면
str에는 "123456789NULL1234" 값이 들어가게 되고 중간에 NULL이 추가되면서
str값은 프로그램에서 사용해 보면 문자열함수들이 "123456789"처럼 다룹니다.
NULL이 삽입되면서 NULL 뒤의 문자들은 무시되죠.
NULL문자를 charater형으로 출력하면 대응되는 ASCII 패턴이 없습니다. 제어코드니까요.
그래서 공백(공백문자는 따로 있습니다. 0x20 이든가..)으로 출력되는거고
integer로 찍으면 0값 그대로 출력되는 겁니다.
비슷하게 'A'를 %c 로 출력하면 'A' 출력되지만 %d로 출력하면 65가 나옵니다.
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
120602 종로, 강남 송년회장소 추천 [5] 브라운72177 11/11/29 2177
120600 축구만 하면 쥐가 납니다...어떻해야되죠. [5] 정성남자2727 11/11/29 2727
120598 회사 생존 방식 하고 회식때 술 피하기 기술.. [25] 강민화이팅3054 11/11/29 3054
120597 역대 스타리그 오프닝 멘트가 궁금해요~ [6] 유유히1672 11/11/29 1672
120596 광주 상무지구 맛집 추천좀 부탁드려요.. [19] 돔돔5073 11/11/29 5073
120594 여자 vs 여자 [7] [KIA]윤석민3499 11/11/29 3499
120593 40~50대 화장품 추천부탁드립니다. [7] SaMid3988 11/11/29 3988
120592 MARQUEE 태그 질문 [1] 임요환의DVD1771 11/11/29 1771
120591 이번 프로리그 실시간 중계 질문입니다. [3] Power_0rc1591 11/11/29 1591
120590 영화 DVD 추천 부탁드립니다. [2] 탑승2221 11/11/29 2221
120589 영화 제목이 궁금합니다. [4] 풍각쟁이1324 11/11/29 1324
120588 켠김에 왕까지 질문입니다. [4] 굼시2322 11/11/29 2322
120587 항문에서 피가 납니다 ㅜㅜ [9] kim9089082107 11/11/29 2107
120586 C 질문이요 [4] 망디망디1295 11/11/29 1295
120584 컴퓨터 하이브리드 피직스 질문입니다. [1] 쇼미더머니1691 11/11/29 1691
120583 할인쿠폰 정보는 어디서 얻나요? (레스토랑,뷔페) [2] nickyo2127 11/11/29 2127
120582 설마 보이스 피싱이 아니겠죠? [3] 참외아빠2097 11/11/29 2097
120581 새끼염소가 죽어갑니다. 뭐라도 먹여보려고 하는데... [5] 내사랑 복남2402 11/11/29 2402
120580 lol 베인 운영법 좀 알려주세요. [9] Dr.faust2198 11/11/29 2198
120579 버스에 탑승했는데 화물차랑 추돌사고가 있었습니다. [4] 生氣1684 11/11/29 1684
120578 팀플 3:3 질문드립니다 [8] 삭제됨1520 11/11/29 1520
120576 무전기 어플 질문입니다. 제논1542 11/11/29 1542
120575 mr이나 연주곡 질문입니다~!! 추천 부탁드려요~ 이파랑1610 11/11/29 1610
목록 이전 다음
댓글

+ : 최근 6시간내에 달린 댓글
+ : 최근 12시간내에 달린 댓글
맨 위로