리디렉션 관련...
HotPink
현재 vmware로 페도라10에서 vi에디터로 코딩하고 있습니다.
(1) a.c - 입력 받은 문자를 두 번 출력합니다.
컴파일해서 a이라는 실행파일을 만들었습니다.
#include stdio.h
int main(void){
char c;
while( scanf(%c,&c) == 1 ) {
printf(%c, c);
printf(%c, c);
}
return 0;
)
(2) b.c - a.c와 용도는 같으나 eof를 사용하기 위해 약간 변형해 보았습니다.
컴파일해서 b이라는 실행파일을 만들었습니다.
#include stdio.h
int main(void){
int c; /* eof를 구별하기 위해 변수형을 int형으로 바꿨습니다 */
while((c=getchar()) != eof) { /* scanf 대신에 getchar로 문자를 읽고 조건을 바꿔 eof를 인식하도록 했습니다 */
printf(%c, c);
printf(%c, c);
}
return 0;
)
(3) temp 라는 파일에
a
b
c
라고 입력 해 두었고
(4) 결과를 저장할 out이라는 파일을 만들었습니다.
위와 같이 파일을 만들어 놓고 쉘 상태에서
a temp out 이라고 입력했더니 (temp 파일에서 입력을 받은거죠 ^^)
out에 제가 원하는 결과인
aa
bb
cc
가출력(저장) 되긴 했지만
라인수가 864250이나 되더군요 ;; 밑에는 쭉 공백이 삽입 된것 같았습니다.;;
여기서 왜 공백이 입력 된 것인지 잘 모르겠습니다 ... (1)번 질문;;
그리고 두번째로 다시 쉘에서
a out 라고 입력하고
화면에서 입력을 받은 문자를 out에 입력 시키려고 했더니
저장시킬 방법이 없더군요 ;;
eof(^d)는 먹지도 않고 인터럽트(^c) 일시중지(^z)로 중단은 시킬 수 있었으나 out이라는 파일에 결과가 저장이 되지 않았습니다.
a.c의 코딩으로는 화면에서 입력 받아서 파일에 출력 시킬수는 없을까요? ...(2)번 질문;;
그래펎그래서 나름 조금 바꿔본 b.c 로는 eof를 인식하고 제대로 출력이 되긴 하던데...
그냥 앞에 코딩의 문제점이 무엇인지 궁금해서 이렇게 여쭈어 봅니다...
나름 질문 의도를 명확하게 전달하려고 했는데 조금 이해하기 힘드신 부분도 있을거라 생각이 됩니다만;; (중간 중간 개념적으로 틀린 말도 있을 것 같고)
아시는 범위 내에서 힌트라도 조금 주신다면 감사하겠습니다 ^^
긴 글 읽어주셔서 감사하고 즐거운 하루 되시길 바랍니다...