파일이름 <stdb.c>
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <unistd.h>
4 #include <fcntl.h>
5
6 #include "student.h"
7
8 int main(int argc, char *argv[])
9 {
10 int fd, id;
11 char c;
12 struct student rec;
13 if (argc < 2) {
14 fprintf(stderr,"instruction : %s file\n", argv[0]);
15 exit(1);
16 }
17 if ((fd = open(argv[1],O_RDONLY)) == -1) {
18 perror(argv[1]);
19 exit(2);
20 }
21
22 do {
23 printf("\n do you want search a studebt id: ");
24 if (scanf("%d", &id) == 1) {
25 lseek(fd,(id-START_ID)*sizeof(rec), SEEK_SET);
26 if ((read(fd, (char *) &rec, sizeof(rec)) > 0 && (rec.id != 0)))
27 printf("name:%s\t id:%d\t score:%d\n",rec.name, rec.id, rec.score);
28
29 else
30 printf("record %d not here\n",id);
31 } else printf("input error\n");
32 printf("cotinue?\n (y/n) \n");
33 scanf(" %c", &c);
34 } while (c=='y');
35 close(fd);
36 exit(0);
37 }
리눅스 gcc 컴파이을 이용해서 하는건데여.
제가 이걸보고 쓰는방법이
gcc -o main stdb.c 라고 한다음,
파일을 하나 만들어서 이름을 stdb1 이런식으로 지으고
내용을
2019123456
김개붕
85
이라고 만들고
./main stdb1
하면
입력할 id?: 2019123456 해도 못찾네요. 제가 저 코딩을 잘이해를 못한거같은데 고수님들 좀 도와주셍
Student 헤더 파일과 같이 해야지
그 파일 내용은
1 #define MAX 24 2 #define START_ID 1401001 3 4 struct student { 5 char name[MAX]; 6 int id; 7 int score; 8 };~ ~ ~ 인데 어떻게 써야 할까여?????