当前位置: 代码迷 >> C语言 >> [求助]结构体变量写入文件后的问题!(问题已解决)
  详细解决方案

[求助]结构体变量写入文件后的问题!(问题已解决)

热度:368   发布时间:2006-07-20 16:45:39.0
[求助]结构体变量写入文件后的问题!(问题已解决)

#include<stdio.h>

enum FONT{JT,FT,EN} ;
enum SIO{MO,OO,PO} ;

struct PTC_INI
{
char name[9];
char custid[5];
char itemcode[18] ;
long quaty1;
long quaty;
int b2s[9];
int ptc[4][9];
enum COLORS cortab[20];
enum FONT zt;
enum SIO zero[4];
}setint;
void save_ini(char *fname);

int main(int argc, char *argv[])
{
FILE *fp1;
if (argc<3){
clrscr();
printf("\n*************use methoed**************");
printf("bin2txt file1 file2\n");
return 1;
}

if((fp1=fopen(argv[1],"rb"))==NULL){
printf("Can't open: %s\n",argv[1]);
return 1;
}
printf("%s\n",argv[1]);

if(fread(&setint,sizeof(struct setcanshu_ini),1,fp1)!=1){
printf("Read the %s file Error!",argv[1]);
fclose(fp1);
}

printf("%ld",setint.b2s[2]);
save_ini(argv[2]);
fclose(fp1);
}

void save_ini(char *fname)
{
int i,j;
FILE *fp;
printf("%s\n",fname);
if ((fp=fopen(fname,"wb"))==NULL)
{
return;
}
fprintf(fp,"料 号:%s\t",setint.name);
fprintf(fp,"客户编号:%s\t",setint.custid);
fprintf(fp,"客户货号:s\n",setint.itemcode);
fprintf(fp,"设定产量:%ld\t",setint.quaty1);
fprintf(fp,"实际产量:%ld\n\n",setint.quaty);

fprintf(fp,"****************以下为表2参数*******************\n");
fprintf(fp,"生产速度\t实际生产速度\tT1\n");
fprintf(fp,"%d\t",setint.b2s[0]);
fprintf(fp,"%d\t",setint.b2s[1]);
fprintf(fp,"%d\t",setint.b2s[5]);
fprintf(fp,"\n");
fprintf(fp,"探针\t失败次数\tT2\n");
fprintf(fp,"%d\t",setint.b2s[2]);
fprintf(fp,"%d\t",setint.b2s[3]);
fprintf(fp,"%d\t",setint.b2s[6]);
fprintf(fp,"异长\tT4\tT3\n");
fprintf(fp,"%d\t",setint.b2s[4]);
fprintf(fp,"%d\t",setint.b2s[8]);
fprintf(fp,"%d\t",setint.b2s[7]);
fprintf(fp,"\n\n");

fprintf(fp,"****************以下为各轴设置参数***************\n");
fprintf(fp,"\t\t凸轮X\t送线Y\t三轴Z\t四轴A");

fprintf(fp,"\n");
fprintf(fp,"齿 轮 比 \t");
for(i=0;i<4;i++)
fprintf(fp,"%d\t",setint.ptc[i][0]);

fprintf(fp,"\n");
fprintf(fp,"线 周 长 \t");
for(i=0;i<4;i++)
fprintf(fp,"%d\t",setint.ptc[i][1]);

fprintf(fp,"\n");
fprintf(fp,"最高速度(转/分)\t");
for(i=0;i<4;i++)
fprintf(fp,"%d\t",setint.ptc[i][2]);

fprintf(fp,"\n");
fprintf(fp,"脉冲/转 \t");
for(i=0;i<4;i++)
fprintf(fp,"%d\t",setint.ptc[i][3]);

fprintf(fp,"\n");
fprintf(fp,"转向许可 \t");
for(i=0;i<4;i++)
fprintf(fp,"%d\t",setint.ptc[i][4]);

fprintf(fp,"\n");
fprintf(fp,"禁用许可 \t");
for(i=0;i<4;i++)
fprintf(fp,"%d\t",setint.ptc[i][5]);

fprintf(fp,"\n");
fprintf(fp,"时间 \t");
for(i=0;i<4;i++)
fprintf(fp,"%d\t",setint.ptc[i][6]);
fprintf(fp,"\n\n");

fprintf(fp,"*********************颜色**********************\n");
fprintf(fp,"\tN\t针\t延\t时\t开\t始\t速\t度\t结\t束\t序\t送\t线\t秒\t序\t三轴Z\t秒\t序\t四轴A\t秒\t序\n");
fprintf(fp,"颜色号: ");
for(i=0;i<20;i++)
fprintf(fp,"%d\t",setint.cortab[i]);
fprintf(fp,"\n\n");


fprintf(fp,"字体:%d(简体:0 繁体:1)",setint.zt);
fprintf(fp,"\n\n");

fprintf(fp,"*********************归零方式**********************\n");
fprintf(fp,"\t凸轮轴\t送线轴Y\t三轴Z\t四轴A\n");
fprintf(fp,"\t");
for(i=0;i<4;i++)
fprintf(fp,"%d\t",setint.zero[i]);
fclose(fp);
}

spint.ini是一个已经存在的文件,因此文件是以二进制流写入的,不便于阅读,所以我将此文件读入一结构体变量后再以文本流方式写入txt文件.
但当我打开此txt文件后发现所有数据均写在一行里,程序中的'\n'没起作用,如下图所示:
不知何固?


[此贴子已经被作者于2006-7-20 21:10:06编辑过]

搜索更多相关的解决方案: 变量  结构体  文件  char  int  

----------------解决方案--------------------------------------------------------

一个fputc('\n',fp);通常不起作用,
换成这样就行了:
fputc('\r',fp);
fputc('\n',fp);
两个一起用,您再试试.


----------------解决方案--------------------------------------------------------
提示: 作者被禁止或删除 内容自动屏蔽

2006-07-20 10:40:53
一叶知秋

等 级:新手上路
帖 子:100
专家分:0
注 册:2006-6-3
  得分:0 
谢谢 穆扬 的提醒,按照你的意思问题已解决!
也谢谢soft_wind !

----------------解决方案--------------------------------------------------------
  相关解决方案