:: 게시판
:: 이전 게시판
|
이전 질문 게시판은 새 글 쓰기를 막았습니다. [질문 게시판]을 이용바랍니다.
통합규정 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: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가 나옵니다.
|