file read & write (example)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
 
#define NEW_LINE printf("\n");
#define CLS system("cls");
#define PAUSE system("pause");
#define GETCHAR getchar();
 
int main()
{
    FILE *fout;
    FILE *fin;
    
    struct Mahasiswa {
        char NPM[10], Nama[256], Fakultas[64], Jurusan[64];
        float Nilai;
    };
    
    struct block {
        struct Mahasiswa Mhs;
    
        char *getNPM() {
            return Mhs.NPM;
        }
        
        char *getNama() {
            return Mhs.Nama;
        }
        
        char *getFakultas() {
            return Mhs.Fakultas;
        }
        
        char *getJurusan() {
            return Mhs.Jurusan;
        }
        
        void setNPM(char value[10]) {
            strcpy(Mhs.NPM, value);
        }
        
        void setNama(char value[256]) {
            strcpy(Mhs.Nama, value);
        }
        
        void setFakultas(char value[64]) {
            strcpy(Mhs.Fakultas, value);
        }
        
        void setJurusan(char value[64]) {
            strcpy(Mhs.Jurusan, value);
        }
        
        void setNilai(float value) {
            Mhs.Nilai = value;
        };
        
        float getNilai() {
            return Mhs.Nilai;
        };
        
        void setMhs(char npm[10], char nama[256], char fakultas[64], char jurusan[64], float nilai) {
            setNPM(npm);
            setNama(nama);
            setFakultas(fakultas);
            setJurusan(jurusan);
            setNilai(nilai);
        }
    } block;
    
    char input;
    int pilihan;
    char npm[10], nama[255], fakultas[64], jurusan[64];
    float nilai;
 
    do {
        NEW_LINE; CLS;
        printf("1. Input Data\n");
        printf("2. Lihat Data\n");
        printf("0. Keluar\n");
        printf("\nMasukan pilihan Anda : ");
        scanf("%d", &pilihan);
        
        switch (pilihan) {
            case 1:
                input = 'y';
                while (input == 'y' || input == 'Y') {
                    NEW_LINE; CLS; GETCHAR;
                    printf("NPM      : "); scanf("%[^\n]", npm); GETCHAR;
                    printf("Nama     : "); scanf("%[^\n]", nama); GETCHAR;
                    printf("Fakultas : "); scanf("%[^\n]", fakultas); GETCHAR;
                    printf("Jurusan  : "); scanf("%[^\n]", jurusan); GETCHAR;
                    printf("Nilai    : "); scanf("%f", &nilai);
                    
                    block.setMhs(npm, nama, fakultas, jurusan, nilai);
                    
                    fout = fopen("database.adb", "ab");
                    if (fout == NULL) {
                        fprintf(stderr, "\nError!. Tidak dapat mengakses file database.adb\n");
                        exit(1);
                    }
                    
                    fwrite((struct Mahasiswa *)&block.Mhs, sizeof(struct Mahasiswa), 1, fout);
                    fclose(fout);
                    
                    printf("\nIngin menginputkan lagi (y/n): ");
                    scanf("%s", &input);
                }
                break;
                
            case 2:
                fin = fopen("database.adb", "rb");
                if (fin == NULL) {
                    fprintf(stderr, "\nError!. Tidak dapat mengakses file database.adb\n");
                    exit(1);
                }
                
                NEW_LINE; CLS;
                while (!feof(fin)) {
                    fread((struct Mahasiswa *)&block.Mhs, sizeof(struct Mahasiswa), 1, fin);
                    
                    if (feof(fin)) break;
                    
                    printf(
                        "%s  %s  %s  %s  %f",
                        block.getNPM(), block.getNama(), block.getFakultas(),
                        block.getJurusan(), block.getNilai()
                    );
                        
                    NEW_LINE;
                }
                fclose(fin);
                NEW_LINE; PAUSE;
                break;
                
            case 0: break;  
            
            default:
                printf("\nPilihan salah !\n");
                break;
        }
    } while (pilihan != 0);
    
    return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>

#define NEW_LINE printf("\n");
#define CLS system("cls");
#define PAUSE system("pause");
#define GETCHAR getchar();

int main()
{
	FILE *fout;
	FILE *fin;
	
	struct Mahasiswa {
		char NPM[10], Nama[256], Fakultas[64], Jurusan[64];
		float Nilai;
	};
	
	struct block {
		struct Mahasiswa Mhs;
	
		char *getNPM() {
			return Mhs.NPM;
		}
		
		char *getNama() {
			return Mhs.Nama;
		}
		
		char *getFakultas() {
			return Mhs.Fakultas;
		}
		
		char *getJurusan() {
			return Mhs.Jurusan;
		}
		
		void setNPM(char value[10]) {
			strcpy(Mhs.NPM, value);
		}
		
		void setNama(char value[256]) {
			strcpy(Mhs.Nama, value);
		}
		
		void setFakultas(char value[64]) {
			strcpy(Mhs.Fakultas, value);
		}
		
		void setJurusan(char value[64]) {
			strcpy(Mhs.Jurusan, value);
		}
		
		void setNilai(float value) {
			Mhs.Nilai = value;
		};
		
		float getNilai() {
			return Mhs.Nilai;
		};
		
		void setMhs(char npm[10], char nama[256], char fakultas[64], char jurusan[64], float nilai) {
			setNPM(npm);
			setNama(nama);
			setFakultas(fakultas);
			setJurusan(jurusan);
			setNilai(nilai);
		}
	} block;
	
	char input;
	int pilihan;
	char npm[10], nama[255], fakultas[64], jurusan[64];
	float nilai;

	do {
		NEW_LINE; CLS;
		printf("1. Input Data\n");
		printf("2. Lihat Data\n");
		printf("0. Keluar\n");
		printf("\nMasukan pilihan Anda : ");
		scanf("%d", &pilihan);
		
		switch (pilihan) {
			case 1:
				input = 'y';
				while (input == 'y' || input == 'Y') {
					NEW_LINE; CLS; GETCHAR;
					printf("NPM      : "); scanf("%[^\n]", npm); GETCHAR;
					printf("Nama     : "); scanf("%[^\n]", nama); GETCHAR;
					printf("Fakultas : "); scanf("%[^\n]", fakultas); GETCHAR;
					printf("Jurusan  : "); scanf("%[^\n]", jurusan); GETCHAR;
					printf("Nilai    : "); scanf("%f", &nilai);
					
					block.setMhs(npm, nama, fakultas, jurusan, nilai);
					
					fout = fopen("database.adb", "ab");
					if (fout == NULL) {
						fprintf(stderr, "\nError!. Tidak dapat mengakses file database.adb\n");
						exit(1);
					}
					
					fwrite((struct Mahasiswa *)&block.Mhs, sizeof(struct Mahasiswa), 1, fout);
					fclose(fout);
					
					printf("\nIngin menginputkan lagi (y/n): ");
					scanf("%s", &input);
				}
				break;
				
			case 2:
				fin = fopen("database.adb", "rb");
				if (fin == NULL) {
					fprintf(stderr, "\nError!. Tidak dapat mengakses file database.adb\n");
					exit(1);
				}
				
				NEW_LINE; CLS;
				while (!feof(fin)) {
					fread((struct Mahasiswa *)&block.Mhs, sizeof(struct Mahasiswa), 1, fin);
					
					if (feof(fin)) break;
					
					printf(
						"%s  %s  %s  %s  %f",
						block.getNPM(), block.getNama(), block.getFakultas(),
						block.getJurusan(), block.getNilai()
					);
						
					NEW_LINE;
				}
				fclose(fin);
				NEW_LINE; PAUSE;
				break;
				
			case 0: break;	
			
			default:
				printf("\nPilihan salah !\n");
				break;
		}
	} while (pilihan != 0);
	
	return 0;
}

2 Responses to file read & write (example)

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code lang=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" extra="">