컴퓨터/C
이제 저장한 파일을 불러오는 부분을 작성해 보도록 하겠습니다.
if (input == 1)
{
FILE* file = fopen("학생저장목록파일.txt", "wt");
if (file != NULL)
{
fprintf(file, "%d\n", count);
for (int i = 0; i < count; i++)
{
fprintf(file,"%s\t",student[i].name);
fprintf(file, "%d\t", student[i].Kor);
fprintf(file, "%d\t", student[i].Eng);
fprintf(file, "%d\t", student[i].Math);
fprintf(file, "%f\t", student[i].Avg);
fprintf(file, "\n");
}
printf("저장이 성공적으로 완료 됬습니다\n");
}
else
{
printf("파일 저장에 실패 했습니다.");
}
}
printf("===== 학생 성적 관리 프로그램 =====\n");
printf("1. 파일 불러오기 \t 2. 새로만들기 \n");
printf("원하는 메뉴를 입력하세요 : ");
int input = inputInt(1, 3);
printf("\n\n");
if (input == 1)
{
FILE* file = fopen("학생저장목록파일.txt", "rt");
if (file != NULL)
{
fscanf(file, "%d", &count);
for (int i = 0; i < count; i++)
{
fscanf(file, "%s\t", student[i].name);
char temp[10] = "";
fscanf(file, "%s\t", temp);
student[i].Kor = atoi(temp);
fscanf(file, "%s\t", temp);
student[i].Eng = atoi(temp);
fscanf(file, "%s\t", temp);
student[i].Math = atoi(temp);
fscanf(file, "%s\t", temp);
student[i].Avg = atof(temp);
}
printf("성공적으로 불러왔습니다. \n");
system("pause");
}
else if(input ==2)
{
printf("새로운 상태로 시작합니다.");
}
else
{
printf("알수 없는 오류로 파일 불러오기에 실패했습니다\n");
printf("새로운 상태로 시작합니다.");
system("pause");
}
}
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
typedef struct _Student
{
char name[20];
int Kor;
int Eng;
int Math;
float Avg;
}Student;
int inputInt(int min, int max)
{
int num;
while (1)
{
scanf("%d", &num);
if (num >= min && num <= max)
{
return num;
}
printf("범위에서 벗어난 값 입니다. 다시 입력해 주세요 (%d ~ %d)\n", min, max);
system("pause");
printf("재 입력 : ");
}
}
void printAll(int count, Student* student)
{
printf("===== 학생 정보 전체 출력하기 =====\n");
for (int i = 0; i < count; i++)
{
printf("학생 [%d/30]\n", i + 1);
printf("이름 : %s \t 국어 : %d \t 영어 : %d \t 수학 : %d \t [평균 점수 : %f] \n\n",
student[i].name, student[i].Kor, student[i].Eng, student[i].Math, student[i].Avg);
}
if (count == 0)
{
printf("등록된 학생 정보가 존재하지 않습니다.\n");
system("pause");
}
}
void printName(int count, Student* student, char name[20])
{
printf("===== 학생 정보 선택 출력하기(%s) =====\n", name);
for (int i = 0; i < count; i++)
{
if (strcmp(name, student[i].name) == 0)
{
printf("이름 : %s \t 국어 : %d \t 영어 : %d \t 수학 : %d \t [평균 점수 : %f] \n\n",
student[i].name, student[i].Kor, student[i].Eng, student[i].Math, student[i].Avg);
return;
}
}
printf("찾는 학생이 존재하지 않습니다.\n");
system("pause");
}
int main()
{
Student student[30];
int count = 0;
printf("===== 학생 성적 관리 프로그램 =====\n");
printf("1. 파일 불러오기 \t 2. 새로만들기 \n");
printf("원하는 메뉴를 입력하세요 : ");
int input = inputInt(1, 3);
printf("\n\n");
if (input == 1)
{
FILE* file = fopen("학생저장목록파일.txt", "rt");
if (file != NULL)
{
fscanf(file, "%d", &count);
for (int i = 0; i < count; i++)
{
fscanf(file, "%s\t", student[i].name);
char temp[10] = "";
fscanf(file, "%s\t", temp);
student[i].Kor = atoi(temp);
fscanf(file, "%s\t", temp);
student[i].Eng = atoi(temp);
fscanf(file, "%s\t", temp);
student[i].Math = atoi(temp);
fscanf(file, "%s\t", temp);
student[i].Avg = atof(temp);
}
printf("성공적으로 불러왔습니다. \n");
system("pause");
}
else if(input ==2)
{
printf("새로운 상태로 시작합니다.");
}
else
{
printf("알수 없는 오류로 파일 불러오기에 실패했습니다\n");
printf("새로운 상태로 시작합니다.");
system("pause");
}
}
while (1)
{
system("cls");
printf("===== 학생 성적 관리 프로그램 =====\n");
printf("1. 학생 정보 입력하기 \t 2. 학생 정보 출력하기 \t 3. 프로그램 종료하기 \n");
printf("원하는 메뉴를 입력하세요 : ");
input = inputInt(1, 3);
printf("\n\n");
if (input == 1)
{
if (count == 30)
{
printf("이미 30명의 학생의 정보를 모두 추가 했습니다.\n");
printf("더 이상 추가 할 수 없습니다.\n\n");
system("pause");
}
else
{
system("cls");
printf("===== 학생 정보 입력하기 [%d / 30] =====\n", count + 1);
printf("이름 : ");
scanf("%s", &student[count].name);
printf("국어 : ");
student[count].Kor = inputInt(0, 100);
printf("영어 : ");
student[count].Eng = inputInt(0, 100);
printf("수학 : ");
student[count].Math = inputInt(0, 100);
student[count].Avg = (float)(student[count].Kor + student[count].Eng + student[count].Math) / 3.0f;
count++;
}
}
else if (input == 2)
{
system("cls");
printf("===== 학생 정보 출력하기 =====\n");
printf("1. 전체 출력하기 \t 2. 선택 출력하기 \n");
printf("원하는 메뉴를 입력하세요 : ");
input = inputInt(1, 2);
if (input == 1)
{
printAll(count, student);
}
else
{
printf("찾을 이름을 입력 하세요 : ");
char name[20];
scanf("%s", name);
printName(count, student, name);
}
system("pause");
}
else if (input == 3)
{
printf("프로그램을 종료합니다.\n");
printf("저장 하시겠습니까 ? 1. 네 \t 2. 아니오 :");
input = inputInt(1, 2);
if (input == 1)
{
FILE* file = fopen("학생저장목록파일.txt", "wt");
if (file != NULL)
{
fprintf(file, "%d\n", count);
for (int i = 0; i < count; i++)
{
fprintf(file,"%s\t",student[i].name);
fprintf(file, "%d\t", student[i].Kor);
fprintf(file, "%d\t", student[i].Eng);
fprintf(file, "%d\t", student[i].Math);
fprintf(file, "%f\t", student[i].Avg);
fprintf(file, "\n");
}
printf("저장이 성공적으로 완료 됬습니다\n");
}
else
{
printf("파일 저장에 실패 했습니다.");
}
}
system("pause");
break;
}
}
return 0;
}
C언어 - Single linked list(단일 연결 리스트) 구현해보기 (0) | 2021.09.06 |
---|---|
C 언어 - 배열의 한계 (선언과 동시에 크기의 불변) (0) | 2021.09.05 |
C 언어 - 라이브러리 만들어보기 (모사 해보기) (0) | 2021.08.03 |
C 언어 - 라이브러리와 헤더 (0) | 2021.08.02 |
C 언어 - 전처리기란 ? (0) | 2021.07.30 |
91년생 공학엔지니어의 개발일지
TODAY :
YESTER DAY :
TOTAL :
Commnet