|  |
| |
| capt_0669 |
궁금한점이 더 있네요....
몇개 더 몇분후에 올릴께요 |
2011/01/03 |
|
| ruka270 |
%c %s등은 포맷스트링 패턴이고, 해당 패턴에 맞는 데이터를 지정해줌으로서 문자열이나 입력 스트림의 형태를 결정짓는 역할을 합니다.
printf함수에서 %s는 주어진 포인터를 시작점으로 널문자(\0)를 만날때까지 아스키코드로 변환해서 출력해줍니다.
하지만 %c를 넣으셨으므로 str변수의 시작점 포인터 자체를 한개의 문자로 바꾸어 출력해버려서 이상한 결과가 나온것 뿐입니다.
참고로 숫자가 256보다 크게되면 256단위로 아스키코드표 처음부터 돈다고 생각하시면됩니다.
아래 소스를 테스트해보시면 이 관계는 명확해질겁니다.
main(){
printf("%c\n",(256*1024)+65);
} |
2011/01/03 |
|
| ruka270 |
문자로 나타냈을때 : [ G ] [ o ] [ o ] [ d ] [ \0 ]
숫자로 나타냈을때 : [71] [111] [111] [100] [0]
생각하시는것처럼 문자열은 메모리상에서 그저 문자를 가르키는 문자를 가르키는 숫자의 연속(배열)일 뿐입니다.
아스키 문자를 사용하는 경우, 문자 하나당 1바이트씩 사용되며 1바이트 크기를 가지는 char형 변수 한자리를 차지합니다.
'Good'이라는 문자열을 나타내기 위해서는 최소 4자리가 필요하며, 추가적으로 문자열의 종료를 나타내는 널문자(\0)를 나타내기 위해서 한자리가 더 필요하므로 5자리 크기를 가지는 char형 배열이 필요한거구요. |
2011/01/03 |
|
| capt_0669 |
아....감사합니다^^
%s는 주어진 포인터를 시작점으로 널문자(\0)를 만날때까지 아스키코드로 변환해서 출력해줍니다
에서 확 깨달았어요 |
2011/01/04 |
|