>> Read Reply from No. 0 article  
RE: RE: vi에서 C코딩할때

등록 2002-10-28 01:13:00     조회 5
이름 모래비    

		: : 다음 함수로 문자열을 받아서 길이를 구합니다
: :
: : int getline( char <>, int lim ) /* lim : max length */
: : {
: :     int c, i;
: :
: :     for(i=0; i<lim-1 && (c=getchar())!=EOF && c!=''; i++)
: :         s[i] = c;
: :     if (c == '') {
: :         s[i] = c;
: :         i++;
: :     }
: :     s[i] = '';
: :     return i;
: : }
: : 
: : 코드의 for 문에서 lim 가 만약 10이라면 문자를 8
: 개만 읽게 
: : 되는 것 아닌가요? 그리고 다음 if 문에서 을 받아서 넣고 
: : 마지막 s[9]에다가 을 넣는 건가요? <= 이렇게 이해했음 
: : 
: : 그렇다면 중간에 if문이 구지 필요가 없을 것 같은데요
: : 그리고 만약 문자열 끝에 이 포함되어 있지 않다면 9개가 아닌 
: : 8개밖에 구할 수 없을 것 같은데요..
: : 다르게 테스트 해보니 생각하는 것이랑 틀리게 되네요..
: : 설명좀 부탁드립니다
: : 
: : --
: : 비나 왔으면 좋겠다
: 
: 쓰여져 있는 코드는 콘솔상에서 한 라인을 입력받는 함수입니다.
: buffer overflow 를 방지하기 위해서 최대 입력받을수 있는 길이가
: 아규먼트로 전달되고, 첫번째 아규먼트에 입력받은 라인을 넣습니다.
: 
: 두번째 아규먼트에 대해서 정확히 해야 할 점이 잇는데..
: 최대 입력받는 길이가 아닌, 첫번째 아규먼트의 크기를 의미하는거
: 같습니다.
: 
: 예로 드신 lim == 10 인 경우에는..(첫 아규먼트가 s 인거 같군요..)
: 첫번째 아규먼트 크기가 10이라는 의미라고 생각하고 분석해 보시면
: s 는 0 ~ 9 까지의 인덱스를 가지며..
: 첫번째 for 문에서는 '' 문자나 입력의 끝, 혹은 i 가 9 미만일때까지
: 문자를 읽어서 배열에 넣습니다.
: 그리고 그 다음 if 문에서  문자가 입력되었으면 '' 문자도 넣습니다.
: 그리고 마지막 부분에서 '' 문자를 넣어서 문자열의 끝을 확실히 하죠.
: 
: 한번 예를 들어보죠...
: 1) long_enough_to_over_10_char
: 2) short
: 3) a<Ctrl+D>       <- <Ctrl+D> 는 Ctrl+D 를 눌렀다는 의미입니다.
: 
: 1) 번의 경우에서는 long_enou 까지 배열에 들어가고 '' 문자가 
: 맨 마지막에 추가된 다음 함수가 끝납니다.
: 2) 에서는 short 를 배열에 넣고, if 문에 의해서 '' 까지 배열에 
: 들어간 다음 '' 문자 추가.
: 3) 에서는 a 가 들어가고, 그다음 '' 문자.
: 
:  -> '' 을 의미, _ -> '' 을 의미
:    0 1 2 3 4 5 6 7 8 9
: 1) l o n g _ e n o u 
: 2) s h o r t _ 
: 3) a 
: 
: 이렇게 되는 것입니다.
  친절히 설명해 주셔서 정말 감사합니다.
많은 도움이 되었습니다.--비가안와 잠도 안와
이름
암호


>> 관련글
  답장 RE: C , 배열로 문자열을 받는데 이해가 잘 안가네요  Les.  2002.10.27  ....
  답장 RE: RE: vi에서 C코딩할때  모래비  2002.10.28  ....
Register [ localhost 목록보기 윗글 아랫글
글쓰기
답장쓰기 수정 삭제
정규표현식 [ 상세 검색 ]
페이지로딩: [ 0.80 초 ] 작업시간: [ 0.18 초 ]

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

적수네 동네
+
| 적수네 동네
| 공부방
| 리눅스 잡지 서고
| LSN 소스
| 링크 모음
+---+
게시판
+
| 떠들어보세!
| 질문과 답변
| 새소식과 정보
| 1원짜리 팁?
| 대화방
+---+
칼럼?
+
| 세하 훔쳐보기
| Welcome2nite
| 혜진의 염장판
+---+
리눅스 상표권
+
| 반대 서명란
| 토론 게시판
+---+
GNU
+
| GNU 선언문
| GNU GPL
| GNU 미러 목록
+---+
프로젝트?
+
| 리눅스카운터
| RC5DES
| 실질헌법 제작
+---+
커널 소식
+
| 안정 버젼: 2.4.14
+---+
테마 선택
+
LSN 방송국?
+
| OFF AIR
+---+
회원
+
| 로그인
+---+
[ 적수네 동네 ] [ 리눅스 상표권 독점 반대 ] [ 한글 리눅스 문서 프로젝트 ] [ KrLine ] [ 사랑넷 ] [ Valid HTML 4.0! ] [ SlashDot ] [ Freshmeat ]
Copyleft (C) 1998-2001 Byeong-Chan Kim . License
TIME: 1791113096
System by WYZsoft, HDD by I.O.Linux, Mizi Research, Embryo, WOWLINUX, Domain by SarangNet, Network by KrLine.