무한루프

jheee Reply 9 years 27 weeks ago
이문제는 4.3을 응용하는게 아닌가요..? 어떤 부분에서 무한 루프가 도는지 모르겠어요/... 그리고 알파벳이 다른순서로 들어오는 경우도 고려해야하는건가요??ㅠㅠ
pichulia Reply 9 years 27 weeks ago
main함수에 선언한 s가 int[] 형인데, getop에서 사용하는 s는 char[]형인요. 그리고 현재 getop로 읽었을 때 가장 먼저 들어오는 글자는 '\n'입니다. 현재 scanf로는 z 538의 538까지만 읽었고, 그 뒤의 '\n'는 읽지 않은 상황이라서 커서는 538'\n' 의 \n 앞에 위치하게 됩니다. 따라서 일단 깔끔하게 error: stack empty\n 부터 출력하고 시작하겠네요. 무한루프를 도는 직접적인 원인은 if (97<=c||c<=122) s[i++] = si[c-97]; 이 부분 입니다.s에는 분명 문자열이 저장되어야할텐데 (atof를 사용하셨으니까) 지금 si에 있는 double형 숫자를 문자열에 집어넣고 있습니다. s[0]=538; 같은 짓을 하고있는거죠. s는 char형인데..s[0]=5, s[1]=3, s[2]=8; 이게 원래 의도했던 동작 아닐까요?
jheee Reply 9 years 26 weeks ago
와..감사합니다..!!