본문 바로가기

보고서/10월 업무일지

10월 22일 업무일지


#include <stdio.h>

int main()
{
  int score;
  char name[10];
  FILE *fpin, *fpout;

  fpin=fopen("d0327.in","r");
  fpout=fopen("d0327.out","w");

  while(!feof(fpin)) //f=file eof=end of file 파일관련함수는 앞에f가 붙는다. 파일 끝에 도달 하면 
                       Non-zero 반환
  {
    fscanf(fpin, "%s %d",name,&score); // scnaf를 써도 fscanf가 호출된다
//fscanf(stdin,"%d",&AA);(입력받을 곳, 입력받을 형식, 입력된 값을 저장할 곳);
//입력받을 곳은 보통 키보드 마우스 등 이다. 표준은 키보드.
//scanf 는 입력받을 곳의 stdin 이 없으므로 자동으로 키보드로 입력받는다.
//fscanf 의 젤앞 f는 어디로 입력받을 건가를 뜻한다.
    printf("%s\t%d\n",name,score);
    fprintf(fpout, "%s\t%d\n",name,score); //printf를써도 fprintf가 호출된다 
//fprintf(stdout,"%d",AA); fprintf(출력할곳, 출력할 형식, 출력할 대상);
//stdout 은 표준출력이라는 말로 모니터 출력을 의미한다. stdout 처럼
//출력할 대상이 있다.(출력할 곳)(ex 파일)
 }
  fclose(fpin);
  fclose(fpout);
  return 0;
}

d0327.in 파일은 TEXT형식으로 저장된다.

 K  i  m    9  7  enter  L  e  e    9  3  enter  P



아스키 코드로 각각 저장된다.
파일포인터는 파일을 열면 처음을 가리킨다.
fscanf(fpin, "%s %d",name,&score); 
             Kim ,10진수를 공백과 엔터키 까지 읽어라.
             Kim의 공백까지 읽는다.

*fscanf 나 scanf 는 공백이나 엔터가 단위이다.

출력
kim<Tab>97<exter>
_

키보드의 커서는 줄을 바꾸어 젤 앞에 위치한다.

6장 함수
6.1 함수의 호출

printf는
int printf(const char *,...); 로 된 함수이다. 끝에 보이는 ... 은 가변인자라고 하여 인자가 가변.


#include <stdio.h>

float average (int/* n1*/, int/* n2*/); //반환형 함수이름 인자,인수 의 형태이다.
//n1 과 n2 는 생략할 수 있다. 앞의 int는 생략 불가능하다.


void main()
{
  int num1, num2;
  float avrg;

  printf("Please enter an integer: ");
  scanf("%d",&num1);
  printf("Please enter an integer: ");
  scanf("%d"&num2);
  avrg=average(num1,num2);//함수의 호출부분이다.(call)
//이 함수의 원형의 인자가 2개이므로 여기서도 인자의 갯수를 반드시 맞춰야한다.
//
  printf("The average of %d and %d is %6.3f\n",num1,num2,avrg);
  return 0;
  
}
//두 수의 평균 값을 산출하는 함수
float average (int n1, int n2) //여기서의 n1 n2는 생략할 수 없다.(error)
{
//위의(int n1, int n2)는 풀어서
//int n1;
//int n2; 로 쓸수 있다. 
 
  float avg; //avg 는 변수인데 지역변수이다.

  avg=(float)(n1+n2)/2;
  return(avg);//여기서 리턴하는 avg는 float형으로 반환형과 일치해야 한다.
}

1.타입맞추기
2.(함수호출시) 인자의 수를 맞춰야 한다.
호출시에 int n1=num1
        int n2=num2

average 함수의 :avg 값이 남는다.
return avg 는 호출했던 곳으로 돌아가게 된다. main 함수 부분에서 호출 했으므로
avrg=avg; 가 되는 것이다.


6.6 함수의 인수전달기법

함수의 호출에서 인수 전달방법(Parameter passing mechanism)은 값 전달호출(call by value)
과 주소 전달호출(call by address=call by reference)이 있다.

'보고서 > 10월 업무일지' 카테고리의 다른 글

10월 26일 업무일지  (0) 2010.10.26
10월 25일 업무일지  (0) 2010.10.25
10월 21일 업무일지  (0) 2010.10.21
10월 20일 업무일지  (0) 2010.10.20
10월 20일 ATMEGA  (0) 2010.10.20