C语言通过.h头文件引入自己写的源程序

通过.h引入自定义函数

1.在get_line.h文件中声明并定义函数,如下:

#include 

#define MAXLEN 1000

int m_getline(char line[]){
	/* 输入字符串,返回数组长度 */
	int c,i;
	for (i = 0; i < MAXLEN && (c = getchar()) != EOF; ++i)
	{
		line[i] = c;
	}
	line[i] = '\0';
	return i;
}
  1. 在另一个文件如main.c中,通过#include引入
#include 
#include "get_line.h"

#define MAXLEN 1000

/* 练习1-18 删除行末尾的空格及制表符,并删除空格行 */
int get_line_no_space(char line[], int len){
	int i;
	for (i = len-1; i >= 0; --i)
	{
		if (line[i] != '\t' && line[i] != ' ')
		{
			line[i] = '\0';
			break;
		}
	}
	if( i <= 0)
		printf("delete space line \n");
	return i;	/* 返回剩余长度 */
}

void main(){
	char line[MAXLEN];
	int len;
	len = m_getline(line);
	get_line_no_space(line,len);
	printf("%s\n", line);
}
  1. 然后编译执行p_1_18.c即可。通过#include引入,其实是将 被引入文件内容,添加到当前源程序中

========= 解决遗留问题:将声明放在 .h中,实现放在 .c中 ==========
将 函数声明放在get_line.h中,内容如下:

#ifndef GET_LINE_H
#define GET_LINE_H

int m_getline(char line[]);

#endif

然后在同一目录下创建同名get_line.c文件,在其中实现该函数:

#include 
# include "get_line.h"   // 这里需要引用头文件
#define MAXLEN 1000

int m_getline(char line[]){
	/* 输入字符串,返回数组长度 */
	int c,i;
	for (i = 0; i < MAXLEN && (c = getchar()) != EOF; ++i)
	{
		line[i] = c;
	}
	line[i] = '\0';
	return i;
}

编译:因为 main.c 使用了 get_line.c 中的函数,故需要将 get_line.c 和 main.c一起编译,在控制台用gcc编译: gcc get_line.h main.c -o main,编译生成可执行程序main.exe
C语言通过.h头文件引入自己写的源程序_第1张图片
感谢@小白的学习之旅,@weixin_45336243,@轩辕招财 等人的帮助

你可能感兴趣的:(C语言)