用C加加编程实现:串复制,即让用户输入字符串S2,将串s2内容复制到串s1中,并且不要用strcpy等现成的函数,而是用底层方法代替。而且要注意比较字符串字典大小,防止溢出
时间: 2024-11-25 18:11:18 浏览: 3
Effective C++, 3rd Edition
在C语言中,实现字符串复制和大小比较而不用`strcpy`等现成函数,可以手动遍历并拷贝字符,同时确保不会超出目标字符串的容量。下面是一个示例:
```c
#include <stdio.h>
#include <string.h> // 为了获取strlen用于比较大小
#define MAX_LENGTH 100 // 设置最大字符串长度
// 用户输入的源字符串
char s1[MAX_LENGTH];
// 用户输入的目标字符串
char s2[MAX_LENGTH];
void copy_string(char* dest, char* src) {
int i;
for (i = 0; src[i] != '\0'; i++) {
if (i == MAX_LENGTH - 1) { // 防止溢出
printf("String overflow! Exiting...\n");
return;
}
dest[i] = src[i];
}
dest[i] = '\0'; // 添加结束符
}
int main() {
printf("Enter source string S1: ");
fgets(s1, MAX_LENGTH, stdin);
s1[strcspn(s1, "\n")] = '\0'; // 去除fgets读取的换行符
printf("Enter target string S2: ");
fgets(s2, MAX_LENGTH, stdin);
s2[strcspn(s2, "\n")] = '\0'; // 同样去除换行符
copy_string(s1, s2); // 拷贝s2到s1
printf("Copied string: %s\n", s1);
// 比较字符串长度
int len1 = strlen(s1);
int len2 = strlen(s2);
if (len1 > len2) {
printf("Length of s1 is larger than s2.\n");
} else if (len1 < len2) {
printf("Length of s2 is larger than s1.\n");
} else {
printf("Both strings have the same length.\n");
}
return 0;
}
```
在这个程序中,`copy_string`函数负责逐个复制字符,`main`函数处理用户输入,并检查字符串是否溢出以及比较长度。
阅读全文