鱼C论坛

 找回密码
 立即注册
查看: 1290|回复: 2

求助

[复制链接]
发表于 2023-12-25 20:08:17 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
编写程序,要求:

(1)定义函数char *substrcpy(char *str1,int m,char *str2),其功能是将字符串str1中第m个字符开始的所有字符复制成一个新的字符串str2,函数substrcpy返回新字符串的首地址。若m大于字符串的长度,则函数返回NULL。

(2)在主函数中输入一个字符串,再输入m的值,调用函数substrcpy得到一个新的字符串并输出;若不能得到新的字符串,则输出“Data error!”。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-12-25 20:08:29 | 显示全部楼层
好的,下面是实现上述功能的代码:
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. char *substrcpy(char *str1, int m, char *str2) {
  5.     int len = strlen(str1);  // 获取字符串长度
  6.     // 判断m是否大于字符串长度
  7.     if (m > len) {
  8.         return NULL; // 返回NULL表示出错
  9.     }
  10.     int i = 0;
  11.     for (; i < len - m; i++) {
  12.         str2[i] = str1[i + m];   // 复制字符到新的字符串中
  13.     }
  14.     str2[i] = '\0';   // 字符串末尾加上结束符'\0'
  15.     return str2;   // 返回新字符串的首地址
  16. }
  17. int main() {
  18.     char str1[100];
  19.     printf("请输入一个字符串:");
  20.     scanf("%s", str1);
  21.     int m;
  22.     printf("请输入m的值:");
  23.     scanf("%d", &m);
  24.     char *str2 = (char *)malloc(strlen(str1) + 1);   // 动态分配内存给新字符串
  25.     char *result = substrcpy(str1, m, str2);
  26.     if (result == NULL) {
  27.         printf("Data error!\n");
  28.     } else {
  29.         printf("得到的新字符串为:%s\n", result);
  30.     }
  31.     free(str2);   // 释放新字符串所占的内存
  32.     return 0;
  33. }
复制代码

希望能够帮助你解决问题!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-25 21:02:09 | 显示全部楼层
下面是一个C程序的例子,它会实现您所描述的要求:

  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>

  4. char *substrcpy(char *str1, int m, char *str2){
  5.     int length = strlen(str1);
  6.     if (m > length) {
  7.         return NULL;
  8.     }
  9.     strcpy(str2, str1 + m - 1);
  10.     return str2;
  11. }

  12. int main(void){
  13.     char str1[100];
  14.     printf("输入字符串:\n");
  15.     gets(str1);
  16.     int m;
  17.     printf("输入m的值:\n");
  18.     scanf("%d", &m);
  19.     char *str2 = malloc(100 * sizeof(char));
  20.     str2 = substrcpy(str1, m, str2);
  21.     if (str2 == NULL){
  22.         printf("Data error!\n");
  23.     }else{
  24.         printf("新的字符串为:%s\n", str2);
  25.     }
  26.     free(str2);
  27.     return 0;
  28. }
复制代码

这个程序首先从用户那里获取一个字符串和一个整数。然后,它会调用我们定义的函数substrcpy来获取一个新的字符串,该字符串从原始字符串的第m个字符开始。如果m大于字符串的长度,那么我们将输出一个错误消息。否则,我们将输出新的字符串。我们需要用malloc为新的字符串分配内存,完成后记得用free释放内存。

注意,这个程序中的字符串的索引是从1开始的,第m个字符对应的索引是m-1。

求最佳答案
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-19 21:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表