永发信息网

c 写文件 fwrite 是写到什么位置

答案:2  悬赏:40  手机版
解决时间 2021-03-18 07:29
c 写文件 fwrite 是写到什么位置
最佳答案
这个得看你文件打开的方式,或者你fseek指定的位置
全部回答
如下定义: struct apparatus_info{ //定义仪器设备信息结构体 char number[10]; //设备编号 char name[20]; //设备名称 double price; //设备单价 char indate[20]; //购进的时间 char producter[20]; //生产厂家 int count; //购进的数量 char usability[initial_size]; //设备的可用性 }; 问题有好几处,也有几种方法解决 1, 分配给records[numapps]的内存空间虽然是给它使用 但是它没有初始化,里面是有一堆乱七八糟的数据 之后你保存到records[numapps]里的数据 如果没有用完numapps空间 尾巴还是有一堆乱七八糟的数据 所以不干净 如果records[numapps]是字符串 搬进去住前先把房间打扫一下,用 memset(records,0,numapps); 就是让它的存储空间全部写0 但是你的records[numapps]是结构体数组 所以需要另外保证每组数据的每个成员都有写值 2, 你用的是gets(str); 输入的是字符串,回车结束 str是10,而records得成员有10,20,这就有隐患 3, atof和atoi函数使用的时候要小心 对于atoi和atof, 有新的函数可以替代 atoi可以用strtol替代, 而atof可以用strtod等替代 strtol比atoi安全, records[numapps].price=(float)atof(str); 改成 records[numapps].price=(double)atof(str); 4, 输入records[numapps]成员数据的时候不如用 scanf("%d%f%s",&......); 格式化输入安全 5, fp=fopen("app_info.txt","w"); 是以文本方式写入文件的 fwrite(&records[i],sizeof(appinfo),1,fp); 验证app_info.txt是文本还是二进制 fwrite的第一个参数是字符串,是文本 fwrite的第一个参数是int或float,是二进制 你的参数是结构体,数据类型复杂,app_info.txt是二进制 具体情况要具体分析 还有fwrite输出结构体数组数据,一句话多痛快 但是你要阅读,或者用程序读出来的时候你会感觉登山一样难 所以用fprintf格式化输出安全 for(i=0;i
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯