这是本文档旧的修订版!
c语言程序设计基础实验
点击下载
以下是根据题目要求设计的两个C语言程序:
(1) insert函数
设计一个char* insert(char* s1, char* s2, int n)函数,在字符串s1的第n个位置插入字符串s2:
#include <stdio.h> #include <string.h> #include <stdlib.h>
char* insert(char* s1, char* s2, int n) {
int len1 = strlen(s1); int len2 = strlen(s2); char* result = (char*)malloc(len1 + len2 + 1); // 分配新的内存
if (n > len1) n = len1; // 防止n超出范围
// 拷贝s1前n个字符 strncpy(result, s1, n); result[n] = '\0';
// 拼接s2 strcat(result, s2);
// 拼接s1剩余部分 strcat(result, s1 + n);
return result;
}
int main() {
char s1[100], s2[100]; int n;
printf("请输入字符串s1: "); scanf("%s", s1); printf("请输入字符串s2: "); scanf("%s", s2); printf("请输入插入位置n: "); scanf("%d", &n);
char* result = insert(s1, s2, n); printf("结果字符串: %s\n", result);
free(result); // 释放动态分配的内存 return 0;
}
(2) 改写strcpy函数
利用指针实现char* strcpy(char* s1, char* s2)的功能:
#include <stdio.h>
char* strcpy_custom(char* s1, char* s2) {
char* p = s1; // 保存起始地址 while ((*s1++ = *s2++) != '\0'); // 逐字符复制 return p;
}
int main() {
char s1[100], s2[100];
printf("请输入源字符串s2: "); scanf("%s", s2);
strcpy_custom(s1, s2); printf("复制结果s1: %s\n", s1);
return 0;
}
以上代码分别完成了两个任务,运行后输入测试数据即可查看结果。
评论