目的:归纳整理功能函数,将功能函数与主函数分离开来,放在其他文件中。让功能函数的调用更加方便,能够快速复用代码。
- 主函数(main函数)放在一个.c文件中:2.c
- 功能函数放在另外一个.c文件中:str.c
- 编写头文件(str.h):会将函数的声明放在头文件中。
- 联合编译:将2.c str.c一起编译 gcc 2.c str.c
2.c代码:
#include <stdio.h>
#include <string.h>
#include "str.h"
int main(int argc, const char *argv[])
{
char str[100],str1[100],str2[100],str3[100];
my_strcmp(str1,str2);
my_strcpy(str,str1);
my_strlen(str);
my_strcat(str1,str2,str3);
return 0;
}
str.c代码:
#include <stdio.h>
#include <string.h>
void my_strcmp(char str1[],char str2[])
{
printf("strcmp:\n");
printf("str1 = ");
scanf("%s",str1);
printf("str2 = ");
scanf("%s",str2);
int i=0;
while(str1[i] == str2[i])
{
if(str1[i] == '\0')
{
break;
}
i++;
}
int result = str1[i] - str2[i];
if(result < 0)
{
printf("str1 < str2\n");
}else if(result > 0)
{
printf("str1 > str2\n");
}else
{
printf("str1 = str2\n");
}
}
void my_strlen(char str[])
{
printf("strlen:\n");
int i = 0;
printf("请输入一个字符串:");
scanf("%s",str);
while(str[i] != '\0')
{
i++;
}
printf("%d\n",i);
}
void my_strcat(char str1[],char str2[],char str3[])
{
printf("strcat:\n");
printf("str1=");
scanf("%s",str1);
printf("str2=");
scanf("%s",str2);
int len1 = strlen(str1);
int len2 = strlen(str2);
int len = len1 + len2;
str3[len];
for (int i = 0; i < len1; i++) {
str3[i] = str1[i];
}
for (int i = 0; i < len2; i++) {
str3[len1 + i] = str2[i];
}
printf("%s\n", str3);
}
void my_strcpy(char str[],char str1[])
{
printf("strcpy:\n");
int count = 0;
int i = 0;
printf("请输入一个字符串str = ");
scanf("%s",str);
while(str[i] != '\0')
{
str1[i] = str[i];
i++;
}
printf("str1 = %s\n",str1);
}
str.h代码:
#ifndef _STR_H_
#define _STR_H_
void my_strcmp(char str1[],char str2[]);
void my_strlen(char str[]);
void my_strcat(char str1[],char str2[],char str3[]);
void my_strcpy(char str[],char str1[]);
#endif
运行截图: