用C语言编写一个字符串处理系统
时间: 2024-10-13 09:06:33 浏览: 24
C语言专业课程设计字符串处理.doc
在C语言中,要编写一个简单的字符串处理系统,我们可以创建一个包含基本操作如字符串复制、连接、查找和替换等功能的函数库。这里是一个基础的例子:
```c
#include <stdio.h>
#include <string.h> // 引入字符串处理库
// 函数原型声明
char* string_copy(char* dest, const char* src); // 字符串复制
char* string_concat(char* dest, const char* str1, const char* str2); // 字符串拼接
int string_index_of(const char* str, const char* substr); // 查找子串位置
void string_replace(char* str, const char* oldsubstr, const char* newsubstr); // 替换子串
// 实现部分
char* string_copy(char* dest, const char* src) {
strncpy(dest, src, strlen(src) + 1);
return dest;
}
char* string_concat(char* dest, const char* str1, const char* str2) {
int len1 = strlen(str1), len2 = strlen(str2);
string_copy(dest, str1);
dest[len1] = '\0'; // 添加结束符
strcat(dest, str2);
return dest;
}
int string_index_of(const char* str, const char* substr) {
size_t found = strnstr(str, substr, strlen(str));
return (found == NULL) ? -1 : (size_t)found;
}
void string_replace(char* str, const char* oldsubstr, const char* newsubstr) {
char temp[strlen(str) + strlen(newsubstr) + 1]; // 预留空间
strcpy(temp, str);
char* pos = strstr(temp, oldsubstr);
while (pos != NULL) {
memmove(pos + strlen(newsubstr), pos, strlen(oldsubstr)); // 移动剩余字符
memcpy(pos, newsubstr, strlen(newsubstr)); // 插入新子串
pos += strlen(newsubstr); // 更新指针位置
}
str = temp; // 更新原始字符串
}
// 示例用法
int main() {
char str1[] = "Hello, World!";
char str2[50];
string_copy(str2, "World"); // 将 str1 中的 "World" 复制到 str2
printf("Copy of 'World': %s\n", str2);
string_concat(str2, ", How are you?", "?"); // 结合 str1 和附加部分
printf("Concatenated: %s\n", str2);
int index = string_index_of(str2, "?"); // 查找 "?"
if (index != -1)
printf("Substring 'How are you?' starts at position %d\n", index);
string_replace(str2, "?", "!"); // 替换 "?"
printf("Replaced: %s\n", str2);
return 0;
}
```
阅读全文