用c语言编写程序实现字符串的基本操作,包括求串长,赋值,比较,串连接,求子串,替换和定位算法,以及编写程序实现顺序串的简单模式匹配算法
时间: 2024-05-02 20:21:44 浏览: 125
字符串的基本操作(C语言)
1. 求串长:
```
#include <stdio.h>
#include <string.h>
int main() {
char str[100];
printf("请输入一个字符串:");
scanf("%s", str);
int len = strlen(str);
printf("该字符串的长度为:%d\n", len);
return 0;
}
```
2. 赋值:
```
#include <stdio.h>
#include <string.h>
int main() {
char str1[100], str2[100];
printf("请输入一个字符串:");
scanf("%s", str1);
strcpy(str2, str1);
printf("复制后的字符串为:%s\n", str2);
return 0;
}
```
3. 比较:
```
#include <stdio.h>
#include <string.h>
int main() {
char str1[100], str2[100];
printf("请输入第一个字符串:");
scanf("%s", str1);
printf("请输入第二个字符串:");
scanf("%s", str2);
int result = strcmp(str1, str2);
if (result == 0) {
printf("两个字符串相等\n");
} else if (result < 0) {
printf("第一个字符串小于第二个字符串\n");
} else {
printf("第一个字符串大于第二个字符串\n");
}
return 0;
}
```
4. 串连接:
```
#include <stdio.h>
#include <string.h>
int main() {
char str1[100], str2[100];
printf("请输入第一个字符串:");
scanf("%s", str1);
printf("请输入第二个字符串:");
scanf("%s", str2);
strcat(str1, str2);
printf("连接后的字符串为:%s\n", str1);
return 0;
}
```
5. 求子串:
```
#include <stdio.h>
#include <string.h>
int main() {
char str1[100], str2[100];
printf("请输入一个字符串:");
scanf("%s", str1);
printf("请输入要提取的子串起始位置和长度(用空格隔开):");
int start, len;
scanf("%d %d", &start, &len);
strncpy(str2, str1 + start, len);
printf("提取的子串为:%s\n", str2);
return 0;
}
```
6. 替换:
```
#include <stdio.h>
#include <string.h>
int main() {
char str[100], sub[100], rep[100];
printf("请输入一个字符串:");
scanf("%s", str);
printf("请输入要替换的子串和替换成的新串(用空格隔开):");
scanf("%s %s", sub, rep);
char *pos = strstr(str, sub);
if (pos == NULL) {
printf("未找到要替换的子串\n");
return 0;
}
int len1 = strlen(sub), len2 = strlen(rep);
if (len1 == len2) {
strncpy(pos, rep, len2);
} else if (len1 < len2) {
memmove(pos + len2, pos + len1, strlen(pos + len1) + 1);
strncpy(pos, rep, len2);
} else {
memmove(pos + len2, pos + len1, strlen(pos + len1) + 1);
strncpy(pos, rep, len2);
}
printf("替换后的字符串为:%s\n", str);
return 0;
}
```
7. 定位算法:
```
#include <stdio.h>
#include <string.h>
int main() {
char str[100], sub[100];
printf("请输入一个字符串:");
scanf("%s", str);
printf("请输入要查找的子串:");
scanf("%s", sub);
char *pos = strstr(str, sub);
if (pos != NULL) {
printf("子串在字符串中的位置为:%d\n", pos - str);
} else {
printf("未找到子串\n");
}
return 0;
}
```
8. 顺序串的简单模式匹配算法:
```
#include <stdio.h>
#include <string.h>
int Index(char *s, char *t) {
int i = 0, j = 0;
while (s[i] != '\0' && t[j] != '\0') {
if (s[i] == t[j]) {
i++;
j++;
} else {
i = i - j + 1;
j = 0;
}
}
if (t[j] == '\0') {
return i - j;
} else {
return -1;
}
}
int main() {
char s[100], t[100];
printf("请输入一个字符串:");
scanf("%s", s);
printf("请输入要匹配的模式串:");
scanf("%s", t);
int pos = Index(s, t);
if (pos == -1) {
printf("未找到模式串\n");
} else {
printf("模式串在字符串中的位置为:%d\n", pos);
}
return 0;
}
```
阅读全文