c语言不能打开文件,路径设置对了
#include<stdio.h>#include<math.h>#include<stdlib.h>typedefstructstudent{intnum;floatn...
#include <stdio.h>
#include <math.h>
#include<stdlib.h>
typedef struct student
{
int num;
float name[10];
int age;
float sex[2];
int grade;
int score;
struct student *next;
} STUDENT;
STUDENT *readfile()
{
FILE *fg;
STUDENT *head;
STUDENT *last;
STUDENT *p;
head = (STUDENT*)malloc(LED);
head->next=NULL;
last=head;
fg=fopen("C:\Users\hust\Desktop\新建文件夹\student.dat","rb");
if(fg==NULL);
{
printf("找不到数据文件");
return NULL;
}
while(!feof(fg))
{
p=(STUDENT*)malloc(LED);
if(fread(p,sizeof(STUDENT),1,fg)==1)
{
p->next=NULL;
last->next=p;
last=p;
}
}
fclose(fg);
return head;
}
void main()
{
FILE *fg;
STUDENT s;
if ((fg=fopen("student.dat","wb"))==NULL)
{
printf("出现错误");
}
do
{
printf("请输入学号: ");
scanf("%d",&s.num);
if (s.num!=-1)
{
printf("请输入姓名: ");
scanf("%s",&s.num);
printf("请输入年龄: ");
scanf("%d",&s.age);
printf("请输入性别: ");
scanf("%s",&s.sex);
printf("请输入年级: ");
scanf("%d",&s.grade);
printf("请输入成绩: ");
scanf("%d",&s.score);
s.next=NULL;
fwrite(&s,sizeof(STUDENT),1,fg);
}
else break;
}
while(1);
fclose(fg);
readfile();
getch();
} 展开
#include <math.h>
#include<stdlib.h>
typedef struct student
{
int num;
float name[10];
int age;
float sex[2];
int grade;
int score;
struct student *next;
} STUDENT;
STUDENT *readfile()
{
FILE *fg;
STUDENT *head;
STUDENT *last;
STUDENT *p;
head = (STUDENT*)malloc(LED);
head->next=NULL;
last=head;
fg=fopen("C:\Users\hust\Desktop\新建文件夹\student.dat","rb");
if(fg==NULL);
{
printf("找不到数据文件");
return NULL;
}
while(!feof(fg))
{
p=(STUDENT*)malloc(LED);
if(fread(p,sizeof(STUDENT),1,fg)==1)
{
p->next=NULL;
last->next=p;
last=p;
}
}
fclose(fg);
return head;
}
void main()
{
FILE *fg;
STUDENT s;
if ((fg=fopen("student.dat","wb"))==NULL)
{
printf("出现错误");
}
do
{
printf("请输入学号: ");
scanf("%d",&s.num);
if (s.num!=-1)
{
printf("请输入姓名: ");
scanf("%s",&s.num);
printf("请输入年龄: ");
scanf("%d",&s.age);
printf("请输入性别: ");
scanf("%s",&s.sex);
printf("请输入年级: ");
scanf("%d",&s.grade);
printf("请输入成绩: ");
scanf("%d",&s.score);
s.next=NULL;
fwrite(&s,sizeof(STUDENT),1,fg);
}
else break;
}
while(1);
fclose(fg);
readfile();
getch();
} 展开
展开全部
1.如果文件不在当前文件夹当中,需要输入绝对路径。或者,使用system("CD")指令更改当前路径,在目标文件路径下打开文件。
2.对于程序来说,不管后缀名如何,文件分为两种类型:文本文件和二进制文件。
C语言里有一系列文件操作函数。区分文本和二进制文件,需要在打开文件时设置不同的控制符mode的变量即可。
3.fopen的函数原型:FILE * fopen(const char * path,const char * mode);
fopen函数的第一个参数是文件路径,第二个参数是打开方式,有以下几种方式:
r 以只读方式打开文件,该文件必须存在。
r+ 以可读写方式打开文件,该文件必须存在。
rb+ 读写打开一个二进制文件,允许读数据。
rw+ 读写打开一个文本文件,允许读和写。
w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)
a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留)
wb 只写打开或新建一个二进制文件;只允许写数据。
wb+ 读写打开或建立一个二进制文件,允许读和写。
wt+ 读写打开或着建立一个文本文件;允许读写。
at+ 读写打开一个文本文件,允许读或在文本末追加数据。
ab+ 读写打开一个二进制文件,允许读或在文件末追加数据。
上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b 字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件。
2.对于程序来说,不管后缀名如何,文件分为两种类型:文本文件和二进制文件。
C语言里有一系列文件操作函数。区分文本和二进制文件,需要在打开文件时设置不同的控制符mode的变量即可。
3.fopen的函数原型:FILE * fopen(const char * path,const char * mode);
fopen函数的第一个参数是文件路径,第二个参数是打开方式,有以下几种方式:
r 以只读方式打开文件,该文件必须存在。
r+ 以可读写方式打开文件,该文件必须存在。
rb+ 读写打开一个二进制文件,允许读数据。
rw+ 读写打开一个文本文件,允许读和写。
w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)
a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留)
wb 只写打开或新建一个二进制文件;只允许写数据。
wb+ 读写打开或建立一个二进制文件,允许读和写。
wt+ 读写打开或着建立一个文本文件;允许读写。
at+ 读写打开一个文本文件,允许读或在文本末追加数据。
ab+ 读写打开一个二进制文件,允许读或在文件末追加数据。
上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b 字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件。
展开全部
在那不错了,你在路径里不要用中文名,再试试,如果还不行,把路径改为D盘或E盘再试试,或者再把打开方式改为:
将“ fg=fopen("C:\Users\hust\Desktop\新建文件夹\student.dat","rb"); ” 改为:
“ fg=fopen("C:\\Users\\hust\\Desktop\\新建文件夹\\student.dat","rb+"); ”
将 “ if ((fg=fopen("student.dat","wb"))==NULL) ” 改成:
“ if ((fg=fopen("student.dat","wb+"))==NULL)”
再试试,应该会好的
将“ fg=fopen("C:\Users\hust\Desktop\新建文件夹\student.dat","rb"); ” 改为:
“ fg=fopen("C:\\Users\\hust\\Desktop\\新建文件夹\\student.dat","rb+"); ”
将 “ if ((fg=fopen("student.dat","wb"))==NULL) ” 改成:
“ if ((fg=fopen("student.dat","wb+"))==NULL)”
再试试,应该会好的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
把这个fg=fopen("C:\Users\hust\Desktop\新建文件夹\student.dat","rb");
换成下面看看
fg=fopen("C:\\Users\\hust\\Desktop\\新建文件夹\\student.dat","rb");
因为一个\是转义字符,多一个才行
换成下面看看
fg=fopen("C:\\Users\\hust\\Desktop\\新建文件夹\\student.dat","rb");
因为一个\是转义字符,多一个才行
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
要用\\转移字符
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询