c语言中文件怎样调用文件
6个回答
展开全部
扩展名为.h的文件,在C语言中被称为header file, 也就是头文件。
头文件的数据格式就是普通的文本文件,可以通过新建文本文件(txt),再把扩展名改为.h的方式创建,在此不赘述。
一、头文件内容格式。
头文件内容并没有固定的格式要求,不过一般为防止嵌套引用给编译器带来死锁或者没必要的开销,一般约定整个头文件中所有内容在一个条件编译下,即如下格式:
#ifndef 宏名
#define 宏名
//头文件主体
#endif
这样可以保证一个头文件在一个源文件中最多只被引用一次。为避免宏名重复,宏名一般由头文件名转换而来,如果头文件名是xxx.h,那么宏名一般定义为:
_XXX_H_
即前后各加一个下划线,同时文件名中除数字、字母、下划线以外的字符均转换为下划线(_)。
头文件主体中内容同样没有做强制约定,可以出现在源文件(.c)中的任何代码均可以放在头文件中。不过一般情况下可以包括以下几种内容:
1 引用其它头文件,格式为
#include <xxx.h>
或
#include "xxx.h"
二者区别在介绍头文件引用时再详细介绍。
2 定义私有类型。比如
typedef unsigned long U32; //为了简写而给无符号32位整型定义一个新的名字
struct xxx {};
也可以是enum, union等复杂类型。
3 宏定义。比如
#define MAX(a,b) (a>b?a:b)
4 函数声明。比如
void test_function(void);
5 全局变量声明。比如
extern int global_var;
6 如果有一个静态全局变量需要在不同源文件中使用,但各文件之间互不相关。那么可以放在头文件中。如:
static int gs_var = 3;
7 对于支持C99规范的C编译器,还可以把内联函数定义在头文件中。比如
static inline int get_min(int a, int b)
{
if(a>b) return b;
return a;
}
以上是常见的头文件中的元素。但实际上头文件中也可以放全局变量的定义,全局函数的实现等。但是头文件中一旦定义了这样的元素,这个头文件在一个工程中只能被一个文件引用,否则编译器会报重复定义的错误。
比如如果有一个规模很大的常量数组,比如一副图片的二进制值,如果把它定义在源文件中,就会显得很冗余,因为并不会经常修改。 这时可以定义在头文件中,只在一个源文件中引用,当有多幅图片需要随时更换时,也可以通过简单的在源文件中修改引用的头文件名达到修改的目的。
二、头文件的引用。
头文件引用的方法其实之前已经大致说过了,在源文件中引用头文件和在头文件中引用的格式是一样的:
#include<xxx.h>或者
#include "xxx.h"
xxx为头文件名。
用<>和""是有一定的区别的。在编译器查找头文件的时候,会在两个区域分别查找。
一个是系统头文件区域,即类似于stdio.h一类的C库函数头文件区。
另一个是自定义头文件区,比如当前目录,以及其它自定义的目录。
用<>时,编译器会先在系统区域查找,然后再查找自定义区域。而用""时则相反。
由于一般并不推荐自定义头文件名与系统头文件名相同(容易引起歧义并难以维护),所以先后顺序并不是太重要,尤其在硬件速度越来越快的今天,使用哪种符号引用头文件已经差别很小了。
头文件的数据格式就是普通的文本文件,可以通过新建文本文件(txt),再把扩展名改为.h的方式创建,在此不赘述。
一、头文件内容格式。
头文件内容并没有固定的格式要求,不过一般为防止嵌套引用给编译器带来死锁或者没必要的开销,一般约定整个头文件中所有内容在一个条件编译下,即如下格式:
#ifndef 宏名
#define 宏名
//头文件主体
#endif
这样可以保证一个头文件在一个源文件中最多只被引用一次。为避免宏名重复,宏名一般由头文件名转换而来,如果头文件名是xxx.h,那么宏名一般定义为:
_XXX_H_
即前后各加一个下划线,同时文件名中除数字、字母、下划线以外的字符均转换为下划线(_)。
头文件主体中内容同样没有做强制约定,可以出现在源文件(.c)中的任何代码均可以放在头文件中。不过一般情况下可以包括以下几种内容:
1 引用其它头文件,格式为
#include <xxx.h>
或
#include "xxx.h"
二者区别在介绍头文件引用时再详细介绍。
2 定义私有类型。比如
typedef unsigned long U32; //为了简写而给无符号32位整型定义一个新的名字
struct xxx {};
也可以是enum, union等复杂类型。
3 宏定义。比如
#define MAX(a,b) (a>b?a:b)
4 函数声明。比如
void test_function(void);
5 全局变量声明。比如
extern int global_var;
6 如果有一个静态全局变量需要在不同源文件中使用,但各文件之间互不相关。那么可以放在头文件中。如:
static int gs_var = 3;
7 对于支持C99规范的C编译器,还可以把内联函数定义在头文件中。比如
static inline int get_min(int a, int b)
{
if(a>b) return b;
return a;
}
以上是常见的头文件中的元素。但实际上头文件中也可以放全局变量的定义,全局函数的实现等。但是头文件中一旦定义了这样的元素,这个头文件在一个工程中只能被一个文件引用,否则编译器会报重复定义的错误。
比如如果有一个规模很大的常量数组,比如一副图片的二进制值,如果把它定义在源文件中,就会显得很冗余,因为并不会经常修改。 这时可以定义在头文件中,只在一个源文件中引用,当有多幅图片需要随时更换时,也可以通过简单的在源文件中修改引用的头文件名达到修改的目的。
二、头文件的引用。
头文件引用的方法其实之前已经大致说过了,在源文件中引用头文件和在头文件中引用的格式是一样的:
#include<xxx.h>或者
#include "xxx.h"
xxx为头文件名。
用<>和""是有一定的区别的。在编译器查找头文件的时候,会在两个区域分别查找。
一个是系统头文件区域,即类似于stdio.h一类的C库函数头文件区。
另一个是自定义头文件区,比如当前目录,以及其它自定义的目录。
用<>时,编译器会先在系统区域查找,然后再查找自定义区域。而用""时则相反。
由于一般并不推荐自定义头文件名与系统头文件名相同(容易引起歧义并难以维护),所以先后顺序并不是太重要,尤其在硬件速度越来越快的今天,使用哪种符号引用头文件已经差别很小了。
展开全部
首先声明文件指针FILE* 名称(名称可以随便起,与变量名一样)
打开文件fopen函数
使用方法:文件指针=fopen("文件名","模式");
"文件名"1.可以带盘符及目录(绝对引用)/*注意反斜杠\要打两个"\\",否则编译器认为是转义字符,会报错*/
2. 也可以不带盘符(相对引用)应用程序必须与文件同目录
"模式"有以下几种:r读文件,w写文件,a可读可写
如FILE* f=fopen("D:\\a.txt","a");
关闭文件fclose函数
使用方法fclose(文件指针)即可
如fclose(f);
输入输出fprintf,fscanf
格式fprintf(文件指针,const char*,...)后面与printf函数使用方法相同
fscanf(文件指针,const char*,...)后面与fscanf函数使用方法相同
文件指针写stdin(输入)/stdout(输出)表示从屏幕输入输出,可以被重定向
stderr也表示屏幕输入输出,不可以被重定向
头文件都是stdio.h
打开文件fopen函数
使用方法:文件指针=fopen("文件名","模式");
"文件名"1.可以带盘符及目录(绝对引用)/*注意反斜杠\要打两个"\\",否则编译器认为是转义字符,会报错*/
2. 也可以不带盘符(相对引用)应用程序必须与文件同目录
"模式"有以下几种:r读文件,w写文件,a可读可写
如FILE* f=fopen("D:\\a.txt","a");
关闭文件fclose函数
使用方法fclose(文件指针)即可
如fclose(f);
输入输出fprintf,fscanf
格式fprintf(文件指针,const char*,...)后面与printf函数使用方法相同
fscanf(文件指针,const char*,...)后面与fscanf函数使用方法相同
文件指针写stdin(输入)/stdout(输出)表示从屏幕输入输出,可以被重定向
stderr也表示屏幕输入输出,不可以被重定向
头文件都是stdio.h
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
fopen 打开一个文件会返回一个文件操作句柄,然后用fread和fwrite对这个文件操作,操作完之后不要忘记fclose,对文件读写操作的函数很多,你可以查一下,看前面回答的又给历程的,,,那个就可以了哦……
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在文件最前面使用#include可以调用文件。例如
#include <stdio.h> /*调用系统stdio.h*/
#include "test.h" /*调用用户自定义文件test.h*/
被调用的文件多是.h文件,即头文件。当然也可以是.c文件,即c语言源文件,但一般不推荐使用这种方式。
#include <stdio.h> /*调用系统stdio.h*/
#include "test.h" /*调用用户自定义文件test.h*/
被调用的文件多是.h文件,即头文件。当然也可以是.c文件,即c语言源文件,但一般不推荐使用这种方式。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <stdio.h>
int main(void)
{
FILE *fp;
char ch;
if((fp=fopen("temp.txt","rb")==NULL)
printf("File not find!");
while (!feof(fp)){
ch=fgetc(fp);
fputc(ch,fp);
}
fclose(f);
return 0;
}
望采纳~~
int main(void)
{
FILE *fp;
char ch;
if((fp=fopen("temp.txt","rb")==NULL)
printf("File not find!");
while (!feof(fp)){
ch=fgetc(fp);
fputc(ch,fp);
}
fclose(f);
return 0;
}
望采纳~~
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询