// 원하는 문자로 메모리 초기화
#include <stdio.h>
#include <malloc.h>
#include <memory.h>
void main()
{
char *buf;
int i, size;
printf(\" 4 이상의 수를 입력하시오.\");
scanf(\"%d\", &size);
printf(\"\\n\");
buf = (char *)malloc(sizeof(char)*size*size);
// 사용자가 입력한 size값으로 size X size 크기의 메모리를 할당
i = 0;
while(i<size) { // 제어변수 i가 size보다 작은 경우 14행부터 19행 실행
memset(buf + (size * i++), \'*\', size); // 현재의 주소에서 size 만큼을 \'*\'문자로 초기화
if(i<size)
memset(buf + (size * i++), \'$\', size); // 현재의 주소에서 size만큼을 \'$\'문자로 초기와
else
break;
}
for(i=1; i<=size*size; i++) {
printf(\"%3c\", buf[i-1]);
if(i%size==0) printf(\"\\n\");
}
free(buf);
}
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
책에 있는거 고대로 써봤는데;
while(i<size) {
memset(buf + (size * i++), \'*\', size);
if(i<size)
memset(buf + (size * i++), \'$\', size);
else
break;
}
이 부분에서
if 문 들어가기 전에
이미 buf + (size * i++) 자리에다가
*를 size만큼 채웠단 얘기잖아
그런데 if 문 들어가자마자
또
memset(buf + (size * i++), \'$\', size);
이게 있으면 또 그자리에다가 $를 넣준다는거 아냐!?(그니까 대체) - 내 생각에
왜 실행해보면 제대로 작동하는 거지!?
디버깅으로 한줄한줄 실행하면서 i가 어떻게 변하는지 봐랑
i++됬으니까 다음꺼에 채우겠지
아아아아아아아~~~ 나 내 대가리를 디버깅 해보고 싶다 ㅡㅡ;