aa

这是本文档旧的修订版!


c语言程序设计基础实验

实验3.zip

2024_10_21_c_epx_4.zip

点击下载

以下是根据题目要求设计的两个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;

}

以上代码分别完成了两个任务,运行后输入测试数据即可查看结果。

请输入您的评论. 可以使用维基语法:
S K A W L
 
  • aa.1733135330.txt.gz
  • 最后更改: 2024/12/02 18:28
  • doge24190