c 结构体文件储存问题
定义了一个结构体,在一个子函数中往里存储,无法从另一个子函数调用出来。其write1中 s.size[n]=strlen(s.data1[i]);printf("%d",s.size[n]);可以输出,主函数中printf("%d\n",s.size[0]);就不行,求帮助。
程序如下:
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<string.h>
void write1();
void write2();
void write3();
void creat();
void scan();
int n=0;
typedef struct
{
char name[80][80]; //存文件名
char data1[80][80]; //存入数据
char data2[80][80];
char data3[80][80];
int size[80]; //存入字节数
}Seq;
void main()
{
Seq s;
char *k=NULL;
k=(char *)malloc(100);
//s=(char *)malloc(100);
strcpy(s.name[0],"filename1");
strcpy(s.name[1],"filename2");
strcpy(s.name[2],"filename3");
printf("是否创建文件 是(y) 否(n)");
gets(k);
if(*k=='y')
{
write1(s); //输入文件信息
printf("%d\n",s.size[0]);
write2(s);
write3(s);
}
scan(s,s.name,s.data1); //扫描文件 ,
}
void write1(Seq s) //创建文件1char *ch1
{
char i=-1;
FILE *fp;
if((fp=fopen(s.name[0],"w"))==NULL)
{
printf("can't open the file\n");
exit(1);
}
printf("输入文件1信息:\n");
while(*s.data1[i]!='\n')
{
i++;
gets(s.data1[i]);
s.size[n]=strlen(s.data1[i]);
printf("%d",s.size[n]);
strcat(s.data1[i],"\n");
fputs(s.data1[i],fp);
n++;
}
fclose(fp);
}
void write2(Seq s) //创建文件2
{
char j=-1;
FILE *fp;
if((fp=fopen(s.name[1],"w"))==NULL)
{
printf("can't open the file\n");
exit(1);
}
printf("输入文件2信息:\n");
while(*s.data2[j]!='\n')
{
j++;
gets(s.data2[j]);
s.size[n]=strlen(s.data2[j]);
strcat(s.data2[j],"\n");
fputs(s.data2[j],fp);
n++;
}
fclose(fp);
}
void write3(Seq s) //创建文件3
{
char k=-1;
FILE *fp;
if((fp=fopen(s.name[2],"w"))==NULL)
{
printf("can't open the file\n");
exit(1);
}
printf("输入文件3信息:\n");
while(*s.data3[k]!='\n')
{
k++;
gets(s.data3[k]);
s.size[n]=strlen(s.data3[k]);
strcat(s.data3[k],"\n");
fputs(s.data3[k],fp);
n++;
}
fclose(fp);
}
void scan(Seq s,char *ch,char *wh) //char *ch,
{
FILE *fp;
int f=1; //控制字节变量
int i,h; //for循环变量
h=1; //控制switch变量
printf("%d\n",s.size[0]);
if((fp=fopen(ch,"r"))==NULL)
{
printf("can't open the file\n");
exit(1);
}
// for(i=0;i<n;i++)
// {
fgets(s.data1[0],s.size[0]+1,fp);
printf("%s",s.data1[0]);
//}
/*while(!feof(fp))
{
for(i=0;i<n;i++)
{
fgets(s.data1[i],s.size[i],fp);
if(strcmp(wh,"#include<filename")==0)
{
switch(h)
{
case 1:h++;scan(s,s.name[f],s.data2);break;
case 2:s.data3;break;
}
printf("''''''''\n");
f++;
printf("......");
//printf("%s",s.data1[0]);
}
}
}*/
fclose(fp);
}