请问已经写好完整可以运行的程序代码了,但是实际运行中要打开已经存在的文件并读取数据进行操作,我已经创建文件了,也在里面放了数据,请问直接写路径+名字不行吗?应该怎么做才能读到文件啊?
不能这样
你可以看看这个文章 很详细
你可以参考这个 把文件名改一下
#include <stdio.h>
#include <stdlib.h>
int main () {
FILE * fp;
fp = fopen ("Ifile.txt", "w+");//写入
fprintf(fp, "%s %s %s %d", "We", "are", "in", 2020);
fclose(fp);
return(0);
}
#include <stdio.h>
int main () {
FILE *fp;
int ch;
fp = fopen("Ifile.txt","r");//读取
while(1) {
ch = fgetc(fp);
if( feof(fp) ) {
break ;
}
printf("%c", ch);
}
fclose(fp);
return(0);
}
对比静态和动态的结构可以看出两者之间的区别。
想把 b.txt文件里的数据读取,并将读取到的数据打印到屏幕上,看代码,student 应是一个学生结构体的名字,下面代码里模拟了一个,可以忽略,供参考:
typedef struct Student{
char stuname[16];
int studentID;
int stuscore;
}student;
void add_student() // 添加
{
printf("------------------------*--------------------");
FILE *fp;
errno_t err;
student a[N]; // 存放学生信息数组
int i = 0, z = 0;
err = fopen_s(&fp, "b.txt", "rb"); // 打开文件
if (err != 0){ // 如果文件打开错误,退出到上级函数
printf("connot open file!\n");
return;
}
while (1) // 从文件读取信息到数组
{
if (fread(&a[i], sizeof(student), 1, fp) == 1)
i++;
else
break;
}
fclose(fp); // 关闭文件
for (z = i, i = 0; i < z; i++) //输出到屏幕
printf("%s %d %d \n", a[i].stuname, a[i].studentID, a[i].stuscore);
}