C语言多文件编译、连接和运行:
1.编写外部函数对应的头文件: file2.c–>file2.h, file3.c–>file3.h, file4.c–>file4.h,
把这些文件与主程序file1.c放在同一个文件夹下。
file2.h
void enter_string(char str[]);
file3.h
void delete_string(char str[],char ch);
file4.h
void print_string(char str[]);
2.在主程序file1.c首部引入各个头文件:
#include “file2.h”
#include “file3.h”
#include “file4.h”
3.MinGw编译: gcc file1.c file2.c file3.c file4.c
4.运行a.exe即可。
谭浩强老师案例补充:
有一个字符串,内有若干个字符,现输入一个字符,如果字符串中包含此字符,则把它删去。用外部函数实现。
主程序file1.c
#include <stdio.h>
#include <string.h>
#include “file2.h”
#include “file3.h”
#include “file4.h”
int main(void){
extern void enter_string(char str[]); //声明输入函数
extern void delete_string(char str[],char ch);//声明删除函数
extern void print_string(char str[]);//声明打印函数
char c;//准备删除的字符
char str[80];//定义字符数组
enter_string(str); //调用输入字符串函数
printf("输入要删除的字符: ");
scanf("%c",&c);
delete_string(str,c);//调用删除字符函数
print_string(str); //调用删除函数
return 0;
}
外部程序 file2.c
#include <stdio.h>
void enter_string(char str[]){
printf("输入字符串: ");
gets(str);
}
外部程序 file3.c
#include <stdio.h>
void delete_string(char str[],char ch){
int i;//循环变量
int j;//未被删除的字符
for(i=j=0;str[i]!=’\0’;i++){
if(str[i]!=ch){
str[j++]=str[i];
}
}
str[j]=’\0’;
}
外部程序 file4.c
#include <stdio.h>
void print_string(char str[]){
printf("%s\n",str);
}