출력이 안되는 이유?

jinsu421의 이미지

#include <stdio.h>
 
int main()
{
	char a[10],b[]="marks";  
	int i=0,j=0;
 
	while(b[j]!='\0')
		j++;
						//strlen 대신에 j사용 printf("%d",j);
	for(i=0;i<j;i++)
	{
	a[i]=b[j-i-1];
	}
	a[i]='\0';
	printf("%s는 %s로 바뀐다!",b,a);
	getchar();
}

역순으로 읽는 프로그램을 만들다가 궁금증이 생겼는데
strlen대신 그냥 j가 최종갯수값을 가지게 카운터 했고,
marks 라는 단어를 skram을 출력을 하는데

어거지로 맞춰서
a[i]=b[j-i-1];
라는 답을 맞추긴했는데

처음엔
a[i]=b[j-i];
만 했는데 그러면 사실상
'\0','s','k','r','a'이 나와야 되는거일텐데 출력은 왜 아무것도 안나오는 거죠??

--그리고 지금 작업환경에서 ctrl+f5를 해도 콘솔창이 뜨자마자 사라져서 결과값을 확인할수 없는데
설정하는 방법이 있나요?

File attachments: 
첨부파일 크기
Image icon jpg.PNG721바이트
익명 사용자의 이미지

그러니까 질문이 a[i]=b[j-i]일땐 왜 아무것도 출력되지 않느냐는 거죠?
C의 문자열 관련 함수들에서 \0은 널문자로, 문자열의 끝을 나타냅니다.
즉 printf함수에서 출력할 때, \0에서 이미 문자열이 끝났다고 보고 더 이상 아무것도 출력하지 않는 거죠.

그리고 Ctrl+F5는 아마도 visual C++인거 같은데 다음 링크를...
http://hellonewworld.tistory.com/182

익명 사용자의 이미지

printf에선 \0 인식하고 그냥 끝난다는 말이죠?

그리고 밑에 링크 감사합니다! 해결됐어요