㈠ c语言 文件的读写操作下面这一段程序为什么无法正常读取文件中的信息
fprintf(fp,"%d%d%d %s\t%s\t%.2f %s\n",...这个语句设定的格式不好, 数字连在一起无法正确读取, 需要在添加合适的分隔符.
㈡ c语言学生成绩管理系统,为什么我的数据保存之后不能读取呢
把你的后两个函数用我的替换一下:
你读取不出来的原因,你没有在保存的文件里面写入一共有多少个信息,你在读取函数那里的读取的studentacount的值是0,所以没有读。另外,既然你读取是rb,保存也应该对应的wb啊。
void
StoreFile(struct
STUDENT
wstudent[])
{
FILE
*fp;
fp=fopen("d:\\student.txt","wb");
if(fp
==
NULL)
{
printf("没有此文件!");
}
fwrite(&studentacount,sizeof(int),1,fp);
fwrite(wstudent,sizeof(struct
STUDENT),studentacount,fp);
fclose(fp);
printf("保存成功!\n");
};
void
OpenFile(struct
STUDENT
wstudent[])
{
FILE
*fp;
fp=fopen("d:\\student.txt","rb");
if(fp
==
NULL)
{
printf("没有此文件!");
}
fread(&studentacount,sizeof(int),1,fp);
fread(wstudent,sizeof(struct
STUDENT),studentacount,fp);
fclose(fp);
printf("打开成功!\n");
};
㈢ c语言文件问题,为什么文件的打开方式是w+,读入函数是fgetc,就读不到文件内的信息
w+,打开文件可读写,文件不存在则创建,文件如果已存在则先被清空。本质是供写文件使用,顺便可以读
r+不会清空文件
㈣ C语言程序为什么读不了文件
看过去好像没什么问题啊.
你再看看文件有没有关掉之类的。
另外你的参数n
好好地跟踪一下看一下。
你说的那个确实是有点问题.
另外fscanf的返回值是返回输入多少个参数
如果返回的个数少于你想要读的个数的话,你那个判断也是不行的.
最好把数据文件和结构体也整上来看看。
㈤ C语言,不能读取文件中的内容
你要打开读的文件必须已存在,已有正确内容, b 是2进制文件噢。
// struct USER {..........} 已定义
void main(){
FILE *fp;
char filename[]="my.dat"; // 如果文件名是my.dat
struct USER user; // 如果已定义结构USER, 这里声明user
if((fp=fopen(filename,"rb"))==NULL){printf("open %s error\n",filename); exit(0);}
fread(&user,sizeof(user),1,fp);
printf("password=%s",user.password);
....
㈥ C语言 下面那里错了 为什么不能从文件读信息
没有看到你写入文件的信息,你读取的是二进制的文件,读写字符串用这种方式是有很大的缺陷的,会出现乱码,读取出来的东西很难调试,我也碰到过很多问题,用sizeof()读取的那个空间,有些部分就是乱码,那乱码部分就是我们没有写入的部分却被读取出来了。建议你向文件读写信息用fprintf和fscanf这两个函数,他们写入文件的信息是没有乱码的!
㈦ c语言 文件打开后,就只能写不能读,为什么
“rt” 只读打开一个文本文件,只允许读数据
“wt” 只写打开或建立一个文本文件,只允许写数据 “at” 追加打开一个文本文件,并在文件末尾写数据 “rb” 只读打开一个二进制文件,只允许读数据
“wb” 只写打开或建立一个二进制文件,只允许写数据 “ab” 追加打开一个二进制文件,并在文件末尾写数据 “rt+” 读写打开一个文本文件,允许读和写
“wt+” 读写打开或建立一个文本文件,允许读写
“at+” 读写打开一个文本文件,允许读,或在文件末追加数据 “ rb+” 读写打开一个二进制文件,允许读和写
“wb+” 读写打开或建立一个二进制文件,允许读和写
“ab+” 读写打开一个二进制文件,允许读,或在文件末追加数据
注意:对于文本文件的操作,我们可以“r”,“w”,“a”,“a+”不需要加字母t也可以的
㈧ C语言编程 可以储存但是不能读取
你所写的函数,存储文件和读取文件所需的存储方式明显不同,当然不可能进行读取了
修改过了,你试试
void save(Finace t[],int n)
{
int i;
FILE *fp;
if((fp=fopen("record.txt","wb"))==NULL)
{
printf("can not open file\n");
return;
}
printf("\nSaving file now!\n");
fprintf(fp,"there is %d records!",n);
fprintf(fp,"\r\n");
for(i=0;i<n;i++)
{
fprintf(fp,"%s %s\0-%s\0-%s %s",t[i].name,t[i].year,t[i].month,t[i].day,t[i].amount);
fprintf(fp,"\r\n");
}
fclose(fp);
printf("****save success***\n");
printf("\nPress any key continue...\n");
getch();
}
int load(Finace t[])
{
int i,n;
FILE *fp;
if((fp=fopen("record.txt","rb"))==NULL)
{
printf("can not open file\n");
return 1;
}
fseek(fp,9,0);
fscanf(fp,"%d",&n);
fseek(fp,20,0);
for(i=0;i<n;i++)
fscanf(fp,"%s %s-%s-%s %s",t[i].name,t[i].year,t[i].month,t[i].day,t[i].amount);
fclose(fp);
printf("You have success read data from file!!!\n");
printf("\nPress any key continue...\n");
getch();
return n;
}
哪里还不行的话就再问我吧,我这里大致测了一下似乎没问题了