1
2
/**//*
3
函數(shù)說明:
4
1)、srcFile為源文件,loc為要檢查的位置,databit為要檢查的數(shù)據(jù)位,data為需要排除的數(shù)據(jù)位
5
2)、成功返回1,失敗返回0
6
*/
7
int updateContent(const char *srcFile,const int loc,const int databit, const int data)
8

{
9
FILE *fsrc=NULL,*ftmp=NULL;
10
char BUFF[256];
11
char tempfile[]="tempfileXXXXXX";
12
char *pbitdata=NULL;
13
const char *delim=",";
14
15
assert((NULL!=srcFile) && (loc>0) && (databit>=1 && databit<=2) && (data>=0 && data<=9));
16
17
if (NULL==(ftmp=fopen(mktemp(tempfile),"w+")))
18
{//如果打開臨時文件失敗
19
printf("<%s:%d>open(or create) file [%s] failed!\nERROR!!! %s\n",
20
__FILE__,__LINE__,tempfile,strerror(errno));
21
22
return 0;
23
}
24
25
if (NULL==(fsrc=fopen(srcFile,"r")))
26
{//如果打開源文件失敗
27
printf("<%s:%d>open file [%s] failed!\nERROR!!! %s\n",
28
__FILE__,__LINE__,srcFile,strerror(errno));
29
30
fclose(ftmp);
31
remove(tempfile);
32
33
return 0;
34
}
35
36
while (!feof(fsrc))
37
{
38
char *tmpStr=NULL;
39
int curNum=1;
40
41
memset(BUFF,0,sizeof(BUFF));
42
if (NULL==fgets(BUFF,sizeof(BUFF),fsrc))
43
continue;
44
tmpStr=strdup(BUFF);
45
pbitdata=strtok(BUFF,delim);
46
while (NULL!=pbitdata)
47
{//分割字符串
48
if (curNum++==loc)
49
{//已找到指定位置的數(shù)據(jù)
50
//如果不符合要求,則保留,否則刪除
51
if (data!=*(pbitdata+databit-1)-48)
52
fputs(tmpStr,ftmp);
53
54
free(tmpStr);
55
tmpStr=NULL;
56
57
break;
58
}
59
pbitdata=strtok(NULL,delim);
60
}
61
//如果沒有找到指定的位置
62
if (NULL!=tmpStr)
63
{
64
fputs(tmpStr,ftmp);
65
66
free(tmpStr);
67
tmpStr=NULL;
68
}
69
}
70
71
if (NULL==(fsrc=freopen(srcFile,"w",fsrc)))
72
{//重新打開源文件失敗
73
printf("<%s:%d>reopen file [%s] failed!\nERROR!!! %s\n",
74
__FILE__,__LINE__,srcFile,strerror(errno));
75
76
return 0;
77
}
78
rewind(ftmp);
79
80
while (!feof(ftmp))
81
{//更新至原來的文件
82
memset(BUFF,0,sizeof(BUFF));
83
if (NULL==fgets(BUFF,sizeof(BUFF),ftmp))
84
continue;
85
fputs(BUFF,fsrc);
86
}
87
fclose(fsrc);
88
fclose(ftmp);
89
remove(tempfile);
90
91
return 1;
92
}
93
94

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
