寫所以,我有其中包含一個input.bin文件以下二進制文件讀取/用C
IK-SZH;jdl72u;John Doe;2013-03-28 11:05
IK-GRR;kat91n;Jane Doe;2013-03-21 15:41
IK-GRR;oat62f;Jane Doe;2013-03-24 08:08
什麼我做的是把它讀成一個結構。用數據做一些事情。添加/刪除線條。 然後我想用上述相同的格式將結構的內容寫回到input.bin文件中。
但不是像上面那樣出現。是這樣的(無空格):
IK-SZH NUL jdl72u NUL John Doe NUL NUL NUL NUL NUL 2013-03-28 NUL NUL NUL IK-GRR NUL kat91n NUL Jane Doe NUL NUL NUL NUL ...
當我重新讀取文件(與完全無效),只把1號線到結構
我的代碼
typedef struct foo {
char kid[7];
char jid[7];
char name[21];
char time[20];
} Foo;
Foo foo[200];
FILE* fp;
int size;
- ------文件閱讀器
void read(char* filename){
fp = fopen(filename, "rb");
int i = 0;
while (!feof(fp)) {
if (fp==NULL){perror("File opening error\n"); exit(1);}
fscanf(fp,"%[^;]; %[^;]; %20[^\;]; %s\n", foo[i].kid, foo[i].jid,
foo[i].name, foo[i].time);
i++;
}
size = i;
print();
fclose(fp);
}
void print(){
int i;
for (i = 0; i < size; ++i){
printf("%s\t %s\t %s\t %s\n", foo[i].kid, foo[i].jid,
foo[i].name, foo[i].time);
}
}
-----作家
void write(){
char str[1000];
FILE* f = fopen("input.bin", "wb");
fseek(f, 0, SEEK_SET);
int i;
for (i = 0; i < jel_size; i++)
fwrite(&foo[i], sizeof(struct foo), 1, f);
fclose(f);
}
想這一點,但是這並沒有寫入任何文件:
char str[1000];
sprintf(str,"%s;%s;%s;%s\n", jelent[i].kazon,
jelent[i].jazon,jelent[i].nev, jelent[i].ido);
write(f,&str,sizeof(str))!=sizeof(str);
的input.bin在我看來,一個文本文件,而不是二進制文件。 –
您可能要()考慮使用fprintf(),而不是FWRITE或write()。 –
你應該在文本模式下打開一個文本文件,而不是二進制模式。 –