读取文件以外的文件内容".txt"

Reading the content of file other than ".txt" file

本文关键字:文件 txt 读取      更新时间:2023-10-16

如何读取不是 C/C++ 简单文本文件的文件内容?例如,我想读取.jpg/.png/.bmp等图像文件并查看某个索引处的值,以检查它是什么颜色?或者如果我有一个.exe/.rar/.zip并且想知道不同索引中存储了什么值?我知道c样式的读取文件,它是

FILE *fp;
fp = fopen("example.txt","r"); /* open for reading */
char c;
c = getc(fp) ;

我想知道如果我将"example.txt"替换为"image.png"左右,它会起作用吗? 我会得到正确的数据吗?

打开非文本文件时,需要指定二进制(未翻译)模式:

FILE *fp = fopen("example.png", "rb");

在典型情况下,通过定义镜像文件中结构的结构,然后使用fread从文件读取到结构中,从二进制文件中读取大部分内容(但这必须小心完成,以确保结构中的填充等内容在内存中的表示形式和磁盘上的表示形式之间没有区别)。

您需要以二进制模式打开文件。这允许您在"原始"模式下读取字节,其中它们与文件中的内容相同。

但是,确定特定像素等的颜色需要您完全了解文件中字节的含义以及它们如何排列以用于读取的文件。这第二个要求要困难得多。为此,您需要对该文件类型的格式进行一些研究。

是的,Ofcorse 您可以在 C 中打开binary mode中的任何文件。 如果您有兴趣,那么您也可以读取任何此类非文本文件的第一个字节。

在大多数情况下,所有不同的文件格式都有一些固定的标头,因此您可以在此基础上识别该文件的类型。

打开任何 matroska(.mkv) 文件并读取 1st 4 字节,您将永远拥有这个

0x1A   0x45   0xDF   0xA3

您还可以在 Linux 中查看二进制表示hexdump实用程序中的任何文件

====================

编辑:

such as .jpg/.png/.bmp and see the value at certain index,to 
check what colour it is?

在这里,您需要了解该文件的格式,并在此基础上知道哪个地方的数据表明了什么信息..!!