728x90

이 예제는 같은 프로젝트 안의 텍스트 파일을  읽어온 다음 배열에 저장한 후

평균과 합계를 계산한후 출력해주는 예제입니다

 

프로젝트 폴더안에 test.txt파일이 있어야 하고

내용은 다음과 같습니다

 

가나다 10 10 10 10 10
나가다 10 10 10 10 10

띄어쓰기와 엔터로 구분하기때문에 입력에 주의해야합니다

 

#pragma warning(disable:4996)//scanf 사용시 경고해제
#include<stdio.h>
#define MAN 2//사람의 명수를 정하는 매크로

int main(void)
{
	FILE* pFile = fopen("test.txt", "r"); //프로젝트의 폴더에있는 test.txt파일을 read모드로 읽어온다
	if (pFile == NULL)//파일이 없을때
	{
		//r로 읽을 때는 파일이 없을 수 있기 때문에 이렇게 널체크를 해주어야합니다.
		//파일이 없으면 FILE*가 NULL 입니다.
		printf("파일이 없습니다. 프로그램을 종료합니다.");
		return 0;//종료
	}

	int sum[MAN + 1]; int ave[MAN + 1]; int kor[MAN + 1];//arr[0]번은 쓰지않게된다
	int eng[MAN + 1]; int math[MAN + 1]; int his[MAN + 1];
	int sci[MAN + 1];
	char name[MAN + 1][10];//문자열의 크기는 10이다
    //행렬크기를 1씩 늘리지않으면 Stack around the variable '????' was corrupted. 행렬사이즈를 오버해서 입력할때나오는 오류가나온다



	//여기까지 와다는건 read 모드로 파일이 열린것 입니다.
	int i;
	for (i = 1; i <= MAN; i++) {//명수만큼 반복하게된다

		fscanf(pFile, "%s %d %d %d %d %d\n", &name[i], &kor[i], &eng[i], &math[i], &his[i], &sci[i]);//텍스트 파일에서 문자를 읽어오는 함수
		sum[i] = (kor[i] + eng[i] + math[i] + his[i] + sci[i]);//합계
		ave[i] = (sum[i] / 5);//평균
		printf("이름:%s 국어:%d 영어:%d 수학:%d 역사:%d 과학:%d 총합%d 평균 %d\n", name[i], kor[i], eng[i], math[i], his[i], sci[i], sum[i], ave[i]);

	}
	
	fclose(pFile);//파일 닫기
	
	return 0;
}

터미널에서 결과는 다음과 같이 출력됩니다.

 

이름:가나다 국어:10 영어:10 수학:10 역사:10 과학:10 총합50 평균 10
이름:나가다 국어:10 영어:10 수학:10 역사:10 과학:10 총합50 평균 10

 

 

728x90

+ Recent posts