读取文件的代码数据结构(读取文件的代码java)

http://www.itjxue.com  2023-04-05 03:54  来源:未知  点击次数: 

如何用C语言读取txt文件中的数据到结构体数组中

1、在vscode里面添加了Python文件和用于读取的文本文件。

2、然后在txt文件写上一些内容用于待会的内容读取,随便写上即可。

3、此外,我们还必须要导入os文件,这样才可调用os中的一些文件操作方法。

4、然后打开要进行读取内容的文件,并且把读取到的内容数据复制给了变量a。

5、然后把变量a打印即可把内容给展现出来,方便查阅了。

6、接着运行jy.py文件,这样就会开始读取,打印内容。

7、可以看到文件的内容真的被读取到了。

如何用fread或fscanf读取文件中的不定长数据结构?

用fscanf比较困难,因为你这个是不定长度的,除非所有的结构成员类型都相同,不然,你没办法预知下一个结构成员类型。当然,你也可以做一定的组织,这样也能实现用fscanf读的方式

用fread可以做到,循环读数据,并做分析,直到读取到ID为止

其实整个程序的难点不在于如何去读或者用哪个函数去读,而是你如何组织你的文件中的数据结构

数据结构做好了,用什么方式都可以读的

C语言读取指定行数据

很遗憾,事实上计算机是不可能做到读取txt文件的第n行的时间复杂度为O(1)的。

因为txt文件是“顺序存储”,如图参考自《数据结构》

要读取第n行,必须找到第n-1行 = 则必须找到n-2行 … 必须找到第1行。所以读取第5000行的字符串,只能一行一行找,就好比人类看书,要看到第5000段( txt的第5000行 其实打印出来是第5000段)必须一段一段数,不然只能估计,就不准确了。

如果要以O(1)时间复杂度定位到第N“行”或第N个记录,必须用“索引存储”、“散列存储”等,如数据库文件会用这类存储。具体细节可以学《数据结构》、《数据库原理》等。

参考代码:

#include?stdio.h?

//读取filename文件(路径)、第?whichLine+1?行文本。

char?*?ReadSpeacialLine(char?*filename,?int?whichLine)

{

FILE?*fp;???????

int?currentLine?=?0; //当前读取的行

char?strLine[1024]; //每行最大读取的字符数,可根据实际情况扩大

if?((fp?=?fopen(filename,?"r"))?==?NULL)?//判断文件是否存在及可读

{

printf("error!");

return?NULL;

}

while?(!feof(fp))

{

if?(currentLine?==?whichLine)

{

fgets(strLine,?1024,?fp);??//读取一行

//printf("%s",?strLine);?//输出

return?strLine;

}

fgets(strLine,?1024,?fp);??//读取一行,并定位到下一行

currentLine++;

}

fclose(fp);?????????????????????//关闭文件

return?NULL;

}

int?main()?{

//注意?源代码里字符串写"\\",编译之后只是1个\,因为\是转义符号

char?txtFile[]?=?"E:\\新建文本文档.txt";

int?i?=?11;

printf("第%d行\n%s",?i+1

,?ReadSpeacialLine(txtFile,?i)); //ReadSpeacialLine返回的字符串里自带换行

getchar(); //防止结束闪退

return?0;

}

求一个C语言中文件的读取与文件的存储的代码示范

/*读取文件*/

#include?stdio.h

main()

{

????FILE?*fp; /*定义一个指向FILE类型结构体的指针变量*/

????char?ch,?filename[50]; /*定义变量及数组为字符型*/

????printf("please?input?file`s?name;\n");

????gets(filename); /*输入文件所在路径及名称*/

????fp?=?fopen(filename,?"r"); /*以只读方式打开指定文件*/

????ch?=?fgetc(fp); /*fgetc函数带回一个字符赋给ch*/

????while?(ch?!=?EOF) /*当读入的字符值等于EOF时结束循环*/

????{

????????putchar(ch); /*将读入的字符输出在屏幕上*/

????????ch?=?fgetc(fp); /*fgetc函数继续带回一个字符赋给ch*/

????}

????fclose(fp); /*关闭文件*/

}

/*将内容写入文件*/

#include?stdio.h

main()

{

????FILE?*fp; /*定义一个指向FILE类型结构体的指针变量*/

????char?ch,?filename[50]; /*定义变量及数组为字符型*/

????printf("please?input?filename:\n");

????scanf("%s",?filename); /*输入文件所在路径及名称*/

????if?((fp?=?fopen(filename,?"w"))?==?NULL) /*以只写方式打开指定文件*/

????{

????????printf("cannot?open?file\n");

????????exit(0);

????}

????ch?=?getchar(); /*fgetc函数带回一个字符赋给ch*/

????while?(ch?!=?'#') /*当输入"#"时结束循环*/

????{

????????fputc(ch,?fp); /*将读入的字符写到磁盘文件上去*/

????????ch?=?getchar(); /*fgetc函数继续带回一个字符赋给ch*/

????}

????fclose(fp); /*关闭文件*/

}

ply格式文件,用C语言怎么读入,并存储在哪种数据结构中

只要你理解了ply文件的结构,就很容量实现了.

就比如:

BMP图像数据保存是这样的:先保存图像的文件头,再保存图像的信息头,再保存一个颜色表,最后才是图像数据.

(下面就以图像的文件头作详细说明)

图像的文件头的信息如下:

偏移 意义

0-1字节 .BMP文件的标志

2-5字节 给出位图文件的大小

6-7字节 保留并必须置为0

8-9字节 保留并必须置为0

10-13字节 位图阵列的偏移值

那么你想读图像的文件头时,你就可以定义如下的一个结构体来保存读到的数据:

typedef struct

{

char bfType[2]; /*用来保存.BMP文件的标志*/

long bfSize; /*用来保存位图文件的大小*/

int bfReserved1; /*用来保存保留字节*/

int bfReserved2; /*用来保存保留字节*/

long bfOffBits; /*用来保存位图阵列偏移量*/

}BMPHEAD;

这个结构体和上面的图像的文件头的偏移一一对应.

这样读文件时,首先用fopen()函数打开文件,用fread()函数将文件的数据读到结构体中就可以了.

读ply文件时用一样的方法就OK了

数据结构的二叉树实验中怎么读入一个文件,用C++

读入很简单,使用#includefstream, 定义一个流对象,char型的char 型,int型的int型。

但是你对这道题的解释不清楚,我没法给你写代码。

(责任编辑:IT教学网)

更多

推荐Fireworks教程文章