重写 strlen strcpy strcat 三个重写 strlen strcpy strcat 三个函数, 分多文件来实现, 在另一个文件调用测试函数, 分多文件来实现, 在另一个文件调用测试
时间: 2024-11-06 15:19:57 浏览: 19
strcpy,strcat,strcmp,strlen,strchr
在 C 语言中,`strlen`, `strcpy`, 和 `strcat` 都属于字符串处理函数,通常位于标准库 `<string.h>` 中。为了将它们分到不同的源文件(`.c` 文件)并测试,你可以按照以下步骤操作:
1. 创建三个独立的 `.c` 文件:
- **string_length.c** (存放 `strlen` 函数)
- **string_copy.c** (存放 `strcpy` 函数)
- **string_concatenate.c** (存放 `strcat` 函数)
对于每个函数,你需要分别实现并声明返回值类型(通常是整型大小的 `size_t` 对于 `strlen`,字符指针对于 `strcpy` 和 `strcat`)。
```c
// string_length.c
#include <stdio.h>
size_t strlen(char* str) {
// 实现 strlen 的逻辑...
return /* 返回字符串长度 */;
}
// string_copy.c
#include <stdio.h>
#include <string.h> // 引入 strcpy
char* strcpy(char* dest, const char* src) {
// 实现 strcpy 的逻辑...
return dest;
}
// string_concatenate.c
#include <stdio.h>
#include <string.h> // 引入 strcat
void strcat(char* dest, const char* src) {
// 实现 strcat 的逻辑...
}
```
2. 在一个公共的 **main_test.c** 或者 **test_string_functions.c** 文件中,作为单独的测试模块,你将包含这三个头文件,并编写测试代码:
```c
#include "string_length.h" // 包含 strlen 宏定义
#include "string_copy.h"
#include "string_concatenate.h"
int main() {
char test_str[] = "Hello, World!";
// 测试 strlen
size_t length = strlen(test_str);
printf("Length of '%s': %zu\n", test_str, length);
// 测试 strcpy
char copy[50];
strcpy(copy, test_str);
printf("Copied string: %s\n", copy);
// 测试 strcat
strcat(copy, ", How are you?");
printf("Concatenated string: %s\n", copy);
return 0;
}
```
3. 最后,在项目的 Makefile 或 build script 中设置规则,编译和链接各个 `.c` 文件:
```makefile
all:
gcc -o main_test main_test.c string_length.o string_copy.o string_concatenate.o
```
运行 `make all` 将会生成可执行文件 `main_test`,可以用来测试这三个字符串处理函数。
阅读全文