past/CIE


■ Run




■ Source Code


★  비교적 과도한 주석을 이용한 것은 설명을 위한 것이니..
     실제 코딩을 할 때는 필요없는 사족은 제외하고 코딩하는 것이 바람직하다.  ★



① string.h 파일..

   이름에서 예상할 수 있듯이 문자열을 다루기 위한 함수들의 사용을 위한 헤더파일이다.
   strcpy, strcat, strlen 등을 사용하기 위해 선언된다.

   이를 확인하기 위해서
   #include <string.h>부분(Line 2)을 주석 처리하고 컴파일 해본 결과..
   컴파일 에러가 뜰거라는 예상과는 다르게..
   아무런 문제 없이 컴파일 및 실행이 되는 것을 확인 할 수 있었다.
   (Error는 고사하고 Warning조차 없다.)
   좀 이해가 안가는 부분..



② 4~6 Line..

   문자열 저장을 위한 배열(1차원 배열)을 선언하고 있다.
   문자열을 저장하기 위한 배열이라서 DataType은 char형.

   만일 정수를 저장하는 배열을 만들고자 한다면..

   int Array[10];     

   위와 같이 DataType만 int형으로 바꿔주면 가능하다.
   위에 선언한 배열은..Array라는 이름의 길이 10인 배열을 의미한다.



③ main 함수 정의 부분..

   위의 소스코드 스크린샷을 보면..
   일일이 주석을 달아놔서
   코드가 의미하는 것들을 어렵지 않게 알 수 있을 듯하다.;;


   13 Line..
      fgets(last,sizeof(last),stdin);

      이번에 처음 사용해본 함수 중 하나이다.
      fgets를 사용하기 위해서는 3개의 전달인자가 필요하다.
      위에서 보는 것과 같이..

      문자열을 입력 받아서 저장하기 위한 대상(last)이 그 첫번째 요소이며,

      두번째 나오는 sizeof(last)는..
      sizeof 연산자를 이용해서 last[100] 배열이 메모리에 할당받는 크기를 전달한다.
      이것을 전달 함으로 인해서 함수는 해당 배열보다 큰 글자가 입력되는 것을 제한한다.

      세번째..stdin
      책에 씌여진 대로라면..읽을 파일이 무엇인지 기술하는 부분..
      현재 stdin이라고 코딩되어있는 이유는 표준 입력 또는 키보드를 이용한 입력을 할 것이기 때문에..
      세번째 인자 자리에 stdin을 사용한 것이다.


   16 Line..

      이부분은 특정한 배열의 요소를 원하는 데이터로 바꿔주고 있는 부분이다.
      (index가 들어가야 할 부분(대괄호 속..)에 표현식(Expression)이 있음을 유의해서 보자.
       표현식을 통해서 데이터(null문자)를 집어넣을 배열요소를 지정하고 있다.)

      왜 그럴까 좀 찾아봤는데..
      fgets함수는 scanf와는 달리 사용자로부터 키보드 입력을 받을 때
      입력 후 누르는 엔터키, 즉 캐리지 리턴까지 저장한다는 것 때문이다.
      (교수님도 수업중간에 말씀하셨던 내용이다.)

      strlen(last)를 이용해서 last에 저장된 문자열의 길이를 구하면..

      입력받은 문자+엔터(캐리지 리턴)+null

      즉, null을 만나는 순간까지의 길이를 구하게 되는데..
      우리는 캐리지 리턴이 들어있는 배열요소에 null문자를 집어넣어 줌으로서..
      last 배열을 불러왔을 때 입력받은 문자만을 사용할 수 있게 된다.



'past > CIE' 카테고리의 다른 글

【 전기전자회로 응용실험 】Transistor..  (0) 2008.09.22
【 Etc.. 】" arctan 4/0 " 또는 " arctan -4/0 " ...  (0) 2008.09.21
【 VHDL 】FullAdder 만들기 실습.  (0) 2008.09.19
9/17 수업.. Source Code Review..  (0) 2008.09.17
배열과 포인터와 함수..ㅡㅡ;;  (3) 2008.09.13
연습 4-5.  (0) 2008.09.11
연습 4-3.  (0) 2008.09.11
연습 4-2.  (0) 2008.09.11
0 0