한 번 더 부탁드리겠습니다......

okkdy0628 Reply 4 years 21 weeks ago
int main() { char a[5]="undo"; if(a!="undo") puts("not same"); else puts("same"); } 의 결과로부터 코드를 수정할 부분을 찾아 고쳤습니다. 디버깅 결과 order들에는 이제 의도한 대로 문자열이 들어갔는데, 그 뒤로 프로그램이 움직이질 않습니다. (좌표의 변화, 회전각 (rotation)이 아예 0으로 나타나고 맨 마지막 줄의 입력만 실행되는 것 같습니다.) 여전히 문자열 처리에 문제가 있는 것인가요, 아니면 다른 문제가 있는 것인가요?
withcs2 Reply 4 years 21 weeks ago
디버깅에서는 제대로 나오는 것 같지만 실제로 order를 출력해보면 뭔가 이상하다는 것을 알 수 있을거예요 2 2 3 turn right 90 go straight 1 tile add 1 입력하고 order1, order2, num을 출력하면 turngo right 90 go straightadd 1 tile add 1 이 나올거예요 문자열을 입력받을 때, 입력 맨 마지막에는 문자열의 끝을 알리는 NULL이 들어가야 하므로 "turn"을 입력받으려면 {'t', 'u', 'r', 'n', NULL} 이렇게 다섯개의 원소가 들어갈 공간이 필요합니다. char array[3][4]; 선언하면 메모리 상태는 {NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL}가 들어있습니다. array[0]에 "abcd"을 입력하면 메모리에는 {'a','b','c','d',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL}가 들어있습니다. array[1]에 "ABCD"를 입력하면 메모리에는 {'a','b','c','d','A','B','C','D',NULL,NULL,NULL,NULL}가 들어있습니다. array[2]에 "1234"를 입력하면 메모리에는 {'a','b','c','d','A','B','C','D','1','2','3','4'}가 들어있습니다. 문자열은 주소값부터 NULL이 나올 때까지이므로 array[0]을 출력하면 "abcdABCD1234", array[1]을 출력하면 "ABCD1234", array[2]을 출력하면 "1234"가 출력됩니다.