>> Delete No. 14477 article
No. [RE][RE] stdin 과 "r" 모드로 연 파일
스트림과의 차이?

등록 2000-12-14 21:37:00 By localhost     조회 2
이름 lanewz    

//////////////////////////////////////// 글쓴이: lanewz 글쓴날: 2000-12-13 20:02:44
 : stdin 과 "r" 모드로 연 파일 스트림간에 차이가 있나요?
: 제가 혼자 쓸 작은 프로그램을 만들면서 만든 함수 중에
: (FILE * )형 인수로 받는 함수 있는데 여기에 stdin 을 넘겨주면
: 에러가 나고 fopen 의 "r" 모드로 연 파일 스트림을 넘겨주면
: 잘 동작합니다.
: 디버깅 해보면 에러 나는 곳도 실행 할때마다 달라집니다.
: 대부분 fseek(), fgets() 등에서 에러가 납니다.
: 뭔가 문제인지, 혹은 stdin 과 "r" 모드로 연 스트림과의 차이점을
: 아시는 분의 답변 바랍니다.
:
: stdin 이 바이너리 모드라서 그런가요?
: 리눅스는 텍스트/바이너리 스트림 구분이 없다고 들었는데....
:
: 참고로 스트림을 "rb" 모드로 열었을 때도 마찬가지 였습니다.
:
: --
: lanewz
 ///////////////////////////// [RE] 글쓴이: 조성석 글쓴날: 2000-12-14 15:22:04
 리눅스에서 그런가요?
해보니까 난 잘되는데 ...
   #include
 int main()
{
char line[1024];
FILE *fp;
 fp = fopen("aa.c","r");
// fp = stdin;
 while (fgets(line,1023,fp))
{
line[1023] = 0;
if ( line[strlen(line)-1] == '' )
line[strlen(line)-1] = 0;
printf("line=%s", line);
//fseek(fp,0,0);
}
 fclose(fp);
}
 ///////////////////////////// [RE][RE]
 제 질문은 ...........
 /**************************/
 #include <stdio.h>
  int main() {
     char buf[256];
     FILE *fs;
     int n = 0;
      fs = stdin;  /* 1 */
   //fs = fopen("a","r"); /* 2 */
      while( fgets(buf,256,fs)) {
            long off;
             printf("%s",buf);
            if( ++count == 5 ) {
                  off = ftell(fs);
                  printf("before offset = %d",off);
                  fseek(fs,-1*strlen(buf),SEEK_CUR);  /* 3 */
                  off = ftell(fs);
                  printf("after offset = %d (%m)",off);
                  break;
                   }
              }
          } 
/***********************/
 이거 실행 시키면 /* 2 */ 넣고 실행하면 제대로 되지만
 /* 1 */ (stdin) 넣고 실행하면 /* 3 */ 에서 에러가 나죠.
 
 제가 알고 싶은 건 바로 이겁니다.
 stdin 과 "r" 모드로 연 파일 스트림의 차이가 뭔가요?--lanewz
[관리자] 패스워드를 입력 하십시오. 답장이 존재하면 함께 삭제됩니다.[ 목록 | 이전 ]
패스워드:    

Copyleft 1999-2026 by JSBoard Open Project
Theme Designed by IDOO All right reserved