Ⅰ 用标准c读取某bmp文件的长宽及象素等信息需要哪些函数
我只要抄一个头文件吧。
bmp文件存袭贮形式为前14个字节为文件信息区,保存的是BMP文件类型标识2,文件长度4,保留字节4,文件描述区长度4,(其中16色位图值为118,256色位图为1078)。
之后40个字节是图像信息区,为图形尺寸4,图形宽度4,图形高度4,其他就不多说了,你可看下关于BMP文件的说明。
因此读取长宽只要从文件头偏移18字节就行。
#include <stdio.h>
main(){
long bmpwidth,bmpheight;
FILE *fp;
fp=fopen("FIVEANGL.bmp","rb");
fseek(fp,18L,SEEK_SET);
fread(&bmpwidth,4,1,fp);
fread(&bmpheight,4,1,fp);
fclose(fp);
printf("\n%s width is %ld,height is %ld","FIVEANGL.bmp",bmpwidth,bmpheight);
getchar();
}
Ⅱ C语言文件的编译与执行的四个阶段并分别描述
开发C程序有四个步骤:编辑、编译、连接和运行。
任何一个体系结构处理器上都可以使用语言程序,只要该体系结构处理器有相应的C语言编译器和库,那么C源代码就可以编译并连接到目标二进制文件上运行。
1、预处理:导入源程序并保存(C文件)。
2、编译:将源程序转换为目标文件(Obj文件)。
3、链接:将目标文件生成为可执行文件(EXE文件)。
4、运行:执行,获取运行结果的EXE文件。
(2)c获取文件描述扩展阅读:
将C语言代码分为程序的几个阶段:
1、首先,源代码文件测试。以及相关的头文件,比如stdio。H、由预处理器CPP预处理为.I文件。预编译的。文件不包含任何宏定义,因为所有宏都已展开,并且包含的文件已插入。我归档。
2、编译过程是对预处理文件进行词法分析、语法分析、语义分析和优化,生成相应的汇编代码文件。这个过程往往是整个程序的核心部分,也是最复杂的部分之一。
3、汇编程序不直接输出可执行文件,而是输出目标文件。汇编程序可以调用LD来生成可以运行的可执行程序。也就是说,您需要链接大量的文件才能获得“a.out”,即最终的可执行文件。
4、在链接过程中,需要重新调整其他目标文件中定义的函数调用指令,而其他目标文件中定义的变量也存在同样的问题。
Ⅲ 求标准C语言读写文件的源代码
/****************************************
程序功能:读取c:\source.txt文件的内容,
取其中'#'开头行的内容写入c:\dest.txt中。
如:source.txt文件内容为如下:
#jksfjlsd
12jlkdjfsl
#jfiejw
#jkfldsl
iejfja;fj
则程序会产生一个dest.txt文件内容如下:
#jksfjlsd
#jfiejw
#jkfldsl
****************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
FILE *fp1;
FILE *fp2; //申明2个文件指针,一个打开源文件,一个打开目标文件
char buf[1024]; //申明一个大字符数组,用于保存文件每一个行的内容
//只读方式打开源文件,这里得用两个反斜杠转义字符
if( (fp1=fopen("c:\\source.txt","r"))==NULL )
{
printf("打开source.txt失败,可能文件还没有创建!");
exit(0);
}
//创建目标文件,这里一般不会发生错误
if( (fp2=fopen("c:\\dest.txt","w"))==NULL )
{
printf("创建dest.txt失败!");
fclose(fp1);
exit(0);
}
while(!feof(fp1)) //当文件指针fp1指向文件末尾时,feof返回0,否则返回1,该句作用是只要未到末尾则进入循环
{
memset(buf, 0, 1024); //buf字符串清0
fgets(buf, 1024, fp1); //从fp1文件当前指针读取一行内容到buf
if(buf[0]=='#') //判断该行的第一个字符是否为'#'
{
fputs(buf, fp2); //是'#',写内容到fp2文件
}
}
fclose(fp1);
fclose(fp2); //循环结束,关闭fp1,fp2文件,程序结束
return 0;
}
Ⅳ 我要用c编写程序读写磁盘,在linux中磁盘为文件,怎样用c语言获取磁盘的文件描述符,然后对磁盘进行读写
linux下面的概念是一切皆文件。所以没有像c盘d盘这样的东西,有的只是各种各样的文件专夹和文件。要读属一个linux下面的文件很简单,命令pwd可以得到当前路径,然后路径接上你打开的文件名就可以知道这个文件的详细路径了。直接open就可以了。
Ⅳ 求关于C单片机语言头文件的描述
一些初学C语言的人,不知道头文件(*.h文件)原来还可以自己写的。只知道调用系统库函数时,要使用#i nclude语句将某些头文件包含进去。其实,头文件跟.C文件一样,是可以自己写的。头文件是一种文本文件,使用文本编辑器将代码编写好之后,以扩展名.h保存就行了。头文件中一般放一些重复使用的代码,例如函数声明,变量声明,常数定义,宏的定义等等。当使用#i nclude语句将头文件引用时,相当于将头文件中所有内容,复制到#i nclude处。为了避免因为重复引用而导致的编译错误,头文件常具有 #ifndef LABEL
#define LABEL
//代码部分
#endif
的格式。其中,LABEL为一个唯一的标号,命名规则跟变量的命名规则一样。常根据它所在的头文件名来命名,例如,如果头文件的文件名叫做hardware.h,那么可以这样使用:
#ifndef __HARDWARE_H__
#define __HARDWARE_H__
//代码部分
#endif
这样写的意思就是,如果没有定义__HARDWARE_H__,则定义__HARDWARE_H__,并编译下面的代码部分,直到遇到#endif。这样,当重复引用时,由于__HARDWARE_H__已经被定义,则下面的代码部分就不会被编译了,这样就避免了重复定义。
另外一个地方就是使用include时,使用引号与尖括号的意思是不一样的。使用引号(“”)时,首先搜索工程文件所在目录,然后再搜索编译器头文件所在目录。而使用尖括号(<>)时,刚好是相反的搜索顺序。假设我们有两个文件名一样的头文件hardware.h,但内容却是不一样的。一个保存在编译器指定的头文件目录下,我们把它叫做文件I;另一个则保存在当前工程的目录下,我们把它叫做文件II。如果我们使用的是#i nclude <hardware.h>,则我们引用到的是文件I。如果我们使用的是#i nclude “hardware.h”,则我们引用的将是文件II。笔者以前就遇到过一个同事问,为什么他修改了那个头文件里面的内容,好象跟没有修改一样?就是因为他有两个一样的头文件(就像我们刚描述的那样),他是使用#i nclude<hardware.h>引用的,而他修改时,却是当前工程所在的目录下的那个文件。