By GokiSoft.com| 19:11 29/10/2020|
Lập Trình C

Bài tập FILE - Lập trình C

- Tạo struct sinh viên gồm các thuộc tính: Tên, tuổi, địa chỉ, mã sv, email

- Viết chương trình thực hiện chức năng sau

1. Nhập thông tin sinh viên

2. Đọc thông tin sinh viên từ file

3. Thoat

Khi người dùng chọn 1: Thực hiện nhập thông tin sinh viên => sau đó hỏi người dùng muốn lưu bằng cách nào

1.1 Lưu file txt (student.txt) => Lưu theo kiểu append (a) - Mỗi sinh viên được luu trên 1 dòng (R001,TRAN VAN DIEP, 20, NAM ĐỊNH,tranvandiep.it@gmail.com) -> định dạng (mã sv, tên, tuổi, địa chỉ, email)

1.2 Lưu file student.dat (nhị phân) => Lưu theo kiểu append (a)

Khi người dùng chọn 2: Thực hiện hỏi người dùng đọc dữ liệu theo cách nào

2.1 Đọc file student.txt

2.2 Đọc file student.dat

Đọc nội dung lưu vào mảng studentList (mảng kiểu con trỏ, được cấp phát bộ nhớ động => sử dụng malloc, calloc, realloc)


Phản hồi từ học viên

5

(Dựa trên đánh giá ngày hôm nay)

Trung Hiếu [community]
Trung Hiếu

2020-10-31 01:01:05

C2002L


#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct sinhvien_st{
	char ten[50];
	int tuoi;
	char diachi[100];
	char masv[30];
	char email[50];
} Sinhvien;

void showMenu(){
	printf("\n1. Nhap thong tin sinh vien.");
	printf("\n2. Doc thong tin sinh vien tu file.");
	printf("\n3. Thoat");
}

void inputData(Sinhvien *p){
	int i;
	for(i=0;i<3;i++){
		printf("\nNhap du lieu cua sinh vien thu %d", i+1);
		
		printf("\nTen: ");
		fflush(stdin); fflush(stdout);
		gets(p[i].ten);
		
		printf("\nTuoi: ");
		scanf("%d", &p[i].tuoi);
		
		printf("\nDia chi: ");
		fflush(stdin); fflush(stdout);
		gets(p[i].diachi);
		
		printf("\nMa SV: ");
		fflush(stdin); fflush(stdout);
		gets(p[i].masv);
		
		printf("\nEmail: ");
		fflush(stdin); fflush(stdout);
		gets(p[i].email);
	}
}

void saveMenu(){
	printf("\n=== Luu du lieu ===");
	printf("\n1. Luu file .txt theo kieu (a)");
	printf("\n2. Luu file .dat theo kieu (a)");	
}

void saveData(Sinhvien *p, int select){
	switch(select) {
		case 1:{
			//Mo ket noi toi file
			FILE *fp = fopen("sinhvien.txt", "a");
			
			//Thuc hien luu file
			int i;
			for(i=0;i<3;i++){
				fprintf(fp, "\nSinh vien thu %d", i+1);
				fprintf(fp, "\n- Ten: %s", p[i].ten);
				fprintf(fp, "\n- Tuoi: %d", p[i].tuoi);
				fprintf(fp, "\n- Dia chi: %s", p[i].diachi);
				fprintf(fp, "\n- Ma SV: %s", p[i].masv);
				fprintf(fp, "\n- Email: %s", p[i].email);
			}
			
			//Dong ket noi
			fclose(fp);
	
			printf("\nLuu du lieu thanh cong!");
			break;
		}
		
		case 2:{
			Sinhvien std;
			//Luu du lieu
			int i;
			for(i=0;i<3;i++){
				strcpy(std.ten, p[i].ten);
				strcpy(std.diachi, p[i].diachi);
				strcpy(std.email, p[i].email);
				strcpy(std.masv, p[i].masv);
				std.tuoi = p[i].tuoi;
			}
			
			//Mo ket noi toi file
			FILE *fp = fopen("sinhvien.dat", "a");
			
			//Thuc hien luu file
			fwrite(&std, sizeof(Sinhvien), 1, fp);
			
			//Dong ket noi
			fclose(fp);
			
			printf("\nLuu du lieu thanh cong!");
			break;
		}
			
	}
}

void readMenu(){
	printf("\n=== Doc du lieu ===");
	printf("\n1. Doc file sinhvien.txt");
	printf("\n2. Doc file sinhvien.dat");
}

void readData(Sinhvien *p, int select){
	switch(select) {
		case 1:{
			//Mo ket noi toi file
			FILE *fp = fopen("sinhvien.txt", "r");	
			
			//Doc du lieu
			char str[1000];
			
			if(fp == NULL){
				printf("Could not open file!");
			}
			else {
				printf("\nNoi dung doc FILE: ");
				while(fgets(str, 1000, fp) != NULL) {
					printf("%s", str);
				}
			}
			
			//Dong ket noi
			fclose(fp);
			break;
		}
		
		case 2: {
			Sinhvien std;
			//Mo ket noi toi file
			FILE *fp = fopen("sinhvien.dat", "r");	
			
			//Doc du lieu
			fread(&std, sizeof(Sinhvien), 1, fp);
			
			printf("\nTen: %s", std.ten);
			//Dong ket noi
			fclose(fp);
			break;
		}
	}	
}
int main(){
	Sinhvien svList[3];
	int select, select2, n;
	
	do{
		showMenu();
		printf("\nNhap lua chon: ");
		scanf("%d", &select);
		
		switch(select) {
			case 1:{
				inputData(svList);
				saveMenu();
				printf("\nChon cach luu du lieu: ");
				scanf("%d", &select2);
				saveData(svList, select2);
				break;
			}
			
			case 2:{
				readMenu();
				printf("\nChon cach doc du lieu: ");
				scanf("%d", &select2);
				readData(svList, select2);
				break;
			}
		}
	}
	while (select != 3);
	
	return 0;
}



TRẦN VĂN ĐIỆP [Teacher]
TRẦN VĂN ĐIỆP

2020-10-29 12:13:32



#include <stdio.h>
#include <stdlib.h>
#include <string.h>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */
typedef struct Student_ST {
	char name[50], address[200];
	int age;
} Student;

int main(int argc, char *argv[]) {
//	//Mo ket noi toi file
//	FILE *fp = fopen("vidu.txt", "a");
//	
//	//Thuc hien doc & ghi
//	fputs("Xin ABC", fp);
//	fprintf(fp, "Noi dung %s sdfsdf", "abc");
//	
//	//Dong ket noi
//	fclose(fp);
//	FILE *fp = fopen("vidu.txt", "r");
//	
//	//doc du lieu
//	char c;
//	
//	printf("\nNoi dung doc FILE:");
//	while(!feof(fp)) {
//		c = fgetc(fp);
//		printf("%c", c);
//	}
//	
//	fclose(fp);
//ghi
//	Student std;
//	strcpy(std.address, "Ha Noi");
//	strcpy(std.name, "Diep");
//	std.age = 20;
//	
//	//mo ket noi
//	FILE *fp = fopen("student.dat", "wb");
//	
//	//ghi du lieu
//	fwrite(&std, sizeof(Student), 1, fp);
//	
//	//dong ket noi
//	fclose(fp);

	Student std;
	//mo ket noi
	FILE *fp = fopen("student.dat", "rb");
	
	//ghi du lieu
	fread(&std, sizeof(Student), 1, fp);
	
	//dong ket noi
	fclose(fp);
	
	printf("\nTen: %s, tuoi: %s", std.name, std.address);
	return 0;
}