출력이 안되는 이유?
글쓴이: jinsu421 / 작성시간: 일, 2014/09/21 - 1:27오후
#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:
첨부 | 파일 크기 |
---|---|
jpg.PNG | 721바이트 |
Forums:
그러니까 질문이 a[i]=b[j-i]일땐 왜 아무것도
그러니까 질문이 a[i]=b[j-i]일땐 왜 아무것도 출력되지 않느냐는 거죠?
C의 문자열 관련 함수들에서 \0은 널문자로, 문자열의 끝을 나타냅니다.
즉 printf함수에서 출력할 때, \0에서 이미 문자열이 끝났다고 보고 더 이상 아무것도 출력하지 않는 거죠.
그리고 Ctrl+F5는 아마도 visual C++인거 같은데 다음 링크를...
http://hellonewworld.tistory.com/182
감사합니다!
printf에선 \0 인식하고 그냥 끝난다는 말이죠?
그리고 밑에 링크 감사합니다! 해결됐어요
댓글 달기