여기서 왜 출력이 안 되는지 궁금합니다

chldlsgn Reply 7 years 31 weeks ago
제 코드의 59번째 줄부터 보면 저는 어레이를 for 구문 속에 printf("%c", 어레이 값)으로 출력하고 있습니다. 이렇게 하는 이유가 printf("%s", dummy)라고 하면 화면에 아무것도 출력이 안 되기 때문입니다. dummy 자체를 어레이로 설정을 했는데 왜 %s로 출력이 안 되는지 궁금합니다.
chldlsgn Reply 7 years 31 weeks ago
위드씨에서에 제출한 코드에서 59번째 줄은 아니겠네요. 다시 제 코드를 보니 위에 제가 /**/을 많이 활용해서 위에 몇 줄을 차지하고 있습니다. 그리고 조금 전에 제가 sample input 대신 제 코드를 실수로 붙여놓고 실행했는데 확인해보니 인풋 자체가 뉴라인 인식이 잘 안 된 것 같습니다. 두 번째 for (i = 0; i <= len; ++i)에서 처음으로 다른 문장으로 인식했는데 혹시 이것 때문에 wrong anwser이 뜬 거일까요? sample input으로 돌리면 적어도 문장 구분은 잘 되는데 막상 코드를 넣으니 다른 결과가 나와서 당황스럽습니다.
withcs1 Reply 7 years 31 weeks ago
printf("%s", dummy) 를 사용하여 제출하신 코드가없어서 안되는이유를 추측해보자면 문자열 끝에 '\0'을 안넣어주셔서 인듯하네요 배열과 문자열은 다른개념입니다. 문자열의 끝에는 '\0'이 있어야 문자열이라 인식할 수 있습니다. 코드 돌려보니 아웃풋 첫문장부터 줄바꿈이 되고있네요 개행 이전의 문자까지만 뒤집어주셔야해요 len 값에 (문장길이 +1) 이 저장되고이써요
chldlsgn Reply 7 years 31 weeks ago
그렇군요, 감사합니다
chldlsgn Reply 7 years 31 weeks ago
왜 줄바꿈현상이 일어나나 찾아보기 위해 이것저것 건드리는데 53번째 줄부터 57번째 줄에 문제가 있는 것 같습니다. 그러나 정확히 뭐가 문제인지 잘 모르겠습니다. for (i = 0; i <= len; ++i) { printf("%c", dummy[i]); } 이렇게 넣으면 줄바꿈과 뉴라인이 있어야 할 것을 빼면 문자열이 역행되어 잘 나옵니다. 그러나 printf("%s\n", dummy)나 하다못해 for (i = 0; i <= len; ++i) { if(i>=0 && i<len) printf("%c", dummy[i]); if(i=len) printf("%c\n", dummy[i]); } 를 넣으면 아예 문자역행이 안 일어납니다. 그냥 입력한 값이 그대로 나오는데 이유가 뭔지 궁금합니다.
chldlsgn Reply 7 years 31 weeks ago
그냥 새로 코드를 짜서 해결했습니다