문자열을 역순으로 나열하는 건데요 도와주세요
채움늘
질문 제목 : 역순으로 나열하는 건데 이상하게 나와요.질문 내용 : 이제 막 배열에 대해 배웠는데요.
문자열을 역순으로 출력 하라는 거라 제가 for문이나 이런걸 사용해 볼려고 해도 어떻게 해야 될지 몰라서
무식하게... 했거든요.
#includestdio.h
void main()
{
char str[5];
char st[5];
printf(5 : );
scanf(%s, str);
st[4]=str[0];
st[3]=str[1];
st[2]=str[2];
st[1]=str[3];
st[0]=str[4];
printf(%s\n, st);
}
이렇게 하고 실행을 시켜 보니
역순으로 나열되더니 이상한 문자 뜨고 입력한 대로 뜨네요...
어디가 문제인 걸까요.. ㅠㅠ
-
일본녀
아 되네요 감사합니다~!
-
맥적다
저렇게 하면..예를들어
str[3]을 str[0]에 대입한뒤,
str[0]을 str[1]에 대입하게돼면
str[1]에 str[3]을 대입한것밖에 돼지않을것같은데요 -
마루나
아마 null값이 제일 먼저 출력되면서 문장이 끝나버려서 그런것 같습니다.
st[3]=str[0];
st[2]=str[1];
st[1]=str[2];
st[0]=str[3];
st[4]=str[4];
이렇게 하시면 될것입니다. 맨뒤null값이 오는곳은 역순시킬배열맨끝에 null 을 넣어주는것입니다. -
외국녀
음.. 4문자만 입력하면 출력 공간에 아무것도 안나오고 다음 줄에 끝날때 나오는 문장이 나와요 ㅠㅠ
-
하나
배열로 해서 문자열을 입력받을시에는 null값이 항상 들어갑니다. 그래서 그걸 염두하시고
문자열 크기 + 1을 해줘야 합니다.
아마
abcde + null = 배열크기 6이 필요
5니까
abcd까지만 하시면 제대로 출력이 되실것입니다.