A文件 - > 写入结构体内容到文件
#include <bits/stdc++.h>
using namespace std ;
// COO
typedef struct {
int r , c ;
char s[100] ;
}Triple ;
typedef struct {
Triple data[100] ; // 大小100
int mn , nm , tu ;
}TriSprMatrix ;
TriSprMatrix a ;
Triple b ;
int main(){
FILE* fp1 = fopen("./test_bin.bin","w") ;
int cnt = 0 ;
while (cin >> b.r >> b.c >> b.s) {
if( b.r == -1 ) break ;
a.data[cnt] = b ;
cnt ++ ;
// outFile.write((char*)&b, sizeof(b)) ;
}
a.mn = 3 ;
a.nm = 3 ;
a.tu = cnt ;
fwrite(&a , sizeof(a) , 1 , fp1 ) ;
return 0;
}
B文件 - > 读取文件内容到结构体
#include <bits/stdc++.h>
using namespace std ;
// COO
typedef struct {
int r , c ;
char s[100] ;
}Triple ;
typedef struct {
Triple data[100] ; // 大小若改为1000,则读写失败
int mn , nm , tu ;
}TriSprMatrix ;
TriSprMatrix a ;
Triple b ;
int main(){
FILE* fp2 = fopen("./test_bin.bin","r") ;
fread(&a , sizeof(a) , 1 , fp2) ;
cout << a.tu << endl ;
for( int i = 0 ; i < a.tu ; i++ ) {
cout << a.data[i].r << ' ' << a.data[i].c << ' ' << a.data[i].s << endl ;
}
return 0;
}
若对结构体进行文件读取,必须保证两者等价,不一致则会导致失败。 本来是很显然的道理,但是写的时候却没有注意,故做此记录。