[완료]fputs의 출력형식에 대하여... NTBS 방식에 대한 문제
글쓴이: superdma / 작성시간: 화, 2009/06/16 - 12:50오후
fputs의 사용에 대해서 질문드립니다.
리눅스 에서 각각 2가지 배열.
void main() { arr[3]="12"; arr2[3]={1,2}; arr[2]=0; fputs(arr,stdout); fputs(arr2,stdout); }
으로 코드를 작성후 출력시
왜 arr2는 출력이 제대로 이루어 지지 않나요?
배열안에 들어있는 값을 봐도 둘 배열 모두 같은 값을 가지고 있는데요,.,
c언어에서는 string을 NTBS로 다루는데 왜 저런 현상이 일어날까요?
감사합니다.
Forums:
void main(){
물론, 줄여서 쓴 코드이겠지만, 정확한 답변을 바란다면 아래와 같이 쓰길 바랍니다.
일단, arr와 arr2의 내용은 서로 다릅니다. arr을 초기화한 코드는, 문자 '1'과 '2'를 넣은 것이지만,
arr2를 초기화한 코드는 문자 코드 1과 2에 해당하는 코드를 넣은 것입니다. 따라서 arr을 arr2 형태로 쓴다면 (ASCII character set이라고 가정):
이 됩니다.
--
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://www.cinsk.org/cfaqs/
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
좋은 지적
좋은 지적 감사합니다 ^^
두 배열 모두 마지막 배열요소에는 NULL을 가리키는 0값이 들어있는데,
arr 은 fputs에서 정상 출력되지만
arr2는 그렇지 않습니다.
왜 그럴까요?
출력결과
정상 출력된 겁니다.
입력하신 ASCII code값은 각각 아래와 같습니다.
1: Start of Header
2: Start of Text
제어 문자가 눈에 보일리가 없지요.
원하시는 것이 아래의 것이 아닌가요?
char arr2[3]={'1','2'};
그렇군요...
저는 c의 string이 NTBS 방식인데
왜 arr2가 제대로 출력안되는지 의아해 했거든요.
이제야 그 의문이 풀리네요.
답변 해주신 두분 정말 감사합니다.
앞으로 좋은 주제 가지고 자주 들릴께요 ^^
댓글 달기