-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathFileReader.c
80 lines (69 loc) · 1.58 KB
/
FileReader.c
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
//
// Created by Lightning on 2017/4/29.
//
#include "FileReader.h"
void ascToBinary(int character, int *ones, int index) {
int p = 128;
for (int i = 0; i < 8; ++i) {
ones[i + index] = (character & p) ? 1 : 0;
p /= 2;
}
}
char BinaryToasc(int *ones, int index) {
int re = 0, p = 128;
for (int i = 0; i < 8; ++i) {
re += ones[i + index] * p;
p /= 2;
}
return re;
}
void readBinary(char *temp, int *s) {
int k = 0;
for (int i = 0; i < 64; i += 8) {
ascToBinary(temp[k++], s, i);
}
}
void writeBinary(int *temp, char *s) {
int k = 0;
for (int i = 0; i < 64; i += 8) {
s[k++] = BinaryToasc(temp, i);
}
}
int readFile64(FILE *fd, int *s) {
unsigned char temp[64] = {'\0'};
int c;
for (int i = 0; i < 8; ++i) {
c = fgetc(fd);
if (c != EOF) {
temp[i] = (char) c;
} else {
printf("\nEND:%d\n", c);
if (i == 0)return 0;
temp[i] = '\0';
}
}
readBinary(temp, s);
return 1;
}
void writeFile64(FILE *fd, int *s) {
char t[64] = {'\0'};
writeBinary(s, t);
fwrite(t, 8, 1, fd);
}
FILE *readFilefromPATH(const void *PATH) {
FILE *fd;
if ((fd = fopen(PATH, "rb")) == NULL) {
printf("文件读取错误,文件不存在或占用");
}
return fd;
}
FILE *writeFilefromPATH(const void *PATH) {
FILE *fd;
if ((fd = fopen(PATH, "wb+")) == NULL) {
printf("文件读取错误,文件不存在或占用");
}
return fd;
}
void closeFile(FILE *fd) {
fclose(fd);
}