이중 연결 리스트를 활용한 도서관리 프로그램. 

제작 환경: MacBookPro Letina 2014 OS X

BookManagement_Prog-master.zip


[git hub 주소]

https://github.com/njinx0612/BookManagement_Prog.git


git@github.com:njinx0612/BookManagement_Prog.git

'언어 > C' 카테고리의 다른 글

Conio.h의 gettext 사용 시 문제점  (0) 2017.08.14
[CubeBite] File_Create_Write 함수  (0) 2017.02.08
[Tip] File I/O Error 다루는 법  (0) 2016.11.05
구조체의 크기와 pragma pack  (0) 2016.10.28
비트필드 구조체  (0) 2016.10.27
Posted by 知彼知己百戰不殆
,

 

 

 

 

 

저수준 파일 입출력을 사용한 파일에서 정보 읽어오는 함수

인자 설명:

  file_location: 파일위치+파일 이름명

  find_index: 파일에서 찾을 index

 

 

 

 

 

 

 

 

 

 

 

 

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
#include <stdio.h>
#include <string.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/types.h>
 
int read_info(char* file_location, char* find_index)
{
    int file_descriptor;
    char* find_location;
    char file_index[1024= {0};
    char file_contents[1024= {0};
    char index[1024= {0};
    int ret, iCnt=0;
    int inCnt=0;
 
#if 0
    printf("[FD] location= %s\n", file_location);
    printf("[FD] index= %s\n", find_index);
#endif
    printf("\n");
 
    if( (file_descriptor = open(file_location,O_RDONLY)) > 0)
    {
        if( read(file_descriptor,file_contents,sizeof(file_contents)) > 0 )
        {
            while(iCnt<strlen(file_contents))
            {
                if*(file_contents+iCnt) != '\n' )
                {
                    printf("[D] file_contents[%d]:%c [0x%02x]\n",iCnt, *(file_contents+iCnt), *(file_contents+iCnt));
 
                }
                iCnt++;
            }
            printf("\n");
            puts(file_contents);
            
            
#if 0
                printf("Input index to find: ");
                fgets(file_index,sizeof(file_index),stdin);
                if*(file_index+0== '\n')
                {
                    printf("Exit Program...\n");
                    break;
                }
#endif
        
            find_location = strstr(file_contents,find_index);
            while*(find_location+inCnt) != '\n' )
            {
                printf("%c",*(find_location+inCnt));
                inCnt++;
            }
 
            printf("\n\n");
    
 
 
 
        } //end of read
            
        else
        {
            printf("read Error!!!\n");
            return -2;
        }
        
        close(file_descriptor);
    }
        
    else
    {
        printf("File open Fail...\n");
        return -3;
    }
    return 0;
}
 
int main(int argc, char* argv[])
{
    char file_index[1024= {0};
    int iCnt;
    if( (argc == 1|| (argc > 3|| (argc == 2) )
    {
        printf("\nArgument Error...\n");
        printf("\nUsing manual: ./(execution_file_name) (file_location) (find_index)\n\n");
        return -1;
    }
 
    read_info(argv[1], argv[2]);
#if 0
    while(1)
    {
        printf("Input index to find: ");
        fgets(file_index,sizeof(file_index),stdin);
        read_info(argv[1], file_index);
        for(iCnt=0; iCnt<sizeof(file_index); iCnt++)
        {
            file_index[iCnt]=0;
        }
    }
#endif
 
    return 0;
}
 

'언어 > 큐브인턴(Embedded)' 카테고리의 다른 글

PINA, PORTA, DDRA 설명(LED관련)  (0) 2016.10.31
UART LED가 정상 작동을 안 하는 경우  (0) 2016.10.28
LED on/off  (0) 2016.10.28
printf 함수 리턴  (0) 2016.09.30
하버드 구조 VS 폰 노이만 구조  (0) 2016.09.21
Posted by 知彼知己百戰不殆
,

저수준 파일 입력 함수

인자 설명

location_filename: 파일위치+파일이름

write_data: 파일에 쓸 데이터

size: 파일 사이즈

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
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <fcntl.h>
#include <string.h>
#include <unistd.h>
 
int file_create_write(char* location_filename, char* write_data, int size)
{
    int file_descriptor;
    char add_write[1024]={0};
    int ret;
    int iCnt;
    printf("\n");
    printf("[D] loca: %s\n", location_filename);
    printf("[D] data: %s\n", write_data);
    printf("[D] File Open start...\n");
 
#if 0
    /* replace a data to file  */
    if( (file_descriptor = open(location_filename,O_CREAT|O_TRUNC|O_WRONLY,0644)) > 0 )
    {
        write(file_descriptor, write_data, size);
        close(file_descriptor);
        printf("[D] File close\n");
    }
    else
    {
        printf("File Open Error...\n");
        return -1;
    }
#endif
 
    /* attach a data to file  */
    if( (file_descriptor = open(location_filename,O_CREAT|O_WRONLY|O_APPEND,0644)) > 0 )
    {
        printf("Open file_descriptor=%d\n",file_descriptor);
        if( write(file_descriptor, write_data, size== -1 )
        {
            printf("File write Error...\n");
            return -3;
        }
    
#if 0
        printf("[ADD] Input data to file (nothing: Press Enter...) : ");
        fgets(add_write, sizeof(add_write), stdin);
        //scanf("%s",add_write);
        
        for(iCnt=0; iCnt<strlen(add_write); iCnt++)
        {
            printf("[D] add_write[%d]=%c[0x%02x]\n",iCnt,add_write[iCnt],add_write[iCnt]);
        }
        
        if*(add_write) == '\n' )
        {
            break;
        }
        
        else
        {
            write(file_descriptor, add_write, sizeof(add_write)-1);
            for(iCnt=0; iCnt<sizeof(add_write); iCnt++)
            {
                add_write[iCnt]=0;
                printf(".");
            }
            
        }
#endif
 
    
        close(file_descriptor);
        printf("[D] File close\n");
    }
    
    else
    {
        printf("File Open Error...\n");
        return -2;
    }
 
    return 0;
}
 
int main(int argc, char* argv[])
{
    int ret,iCnt = 0;
    char file_location_name [1024= {0};
    char file_write [1024= {0};
 
    if( argc <= 1 || argc > 2 )
    {
        printf("Argument Error...\n");
        printf("Using manual: ./(execution_file_name) (file_location)\n");
        return -1;
    }
 
    while(1)
    {
        iCnt = 0;
        printf("\n Input data to file : ");
        fgets(file_write, sizeof(file_write), stdin);
        //for(iCnt=0; iCnt<strlen(file_write); iCnt++)
 
        while*(file_write+iCnt) != '\n' )
        {
            printf("[D] file_write[%d]=%c[0x%02x]\n",iCnt,file_write[iCnt],file_write[iCnt]);
            iCnt++;
        }
 
        if( file_write[0== '\n' )
        {
            break;
        }
 
        /* file_write end is '\n' */
        ret = file_create_write( argv[1], file_write, strlen(file_write) );
        
        
        for(iCnt=0; iCnt<strlen(file_write); iCnt++)
        {
            file_write[iCnt]=0;
        }
    }
 
    /* remove '\n' */
    //ret = file_create_write( file_location_name, file_write, strlen(file_write)-1); 
    printf("[D] File open return=%d\n", ret);
 
    return 0;
    
}



Posted by 知彼知己百戰不殆
,