【问题描述】5.14 编写程序,将字符串中的第m个字符开始的全部字符复制到另一个字符串中。要求在主函数中输入字符串及m的值,并输出复制结果,在被调函数中完成复制。 【输入输出样例】 【样例说明】 输出结束后需要换行。 输入提示符中冒号为英文字符,后面无空格
时间: 2024-10-21 19:12:45 浏览: 45
将字符串中从第m个字符开始的全部字符复制成为另一个字符串并打印
为了编写这个程序,你可以创建两个函数:一个用于接收输入并处理字符串,另一个负责实际的复制操作。这里是一个简单的C语言程序实现:
```c
#include <stdio.h>
#include <string.h>
// 函数声明,将在main函数中调用
void copy_chars(char* str, int m, char* dest);
int main() {
char input[100];
char result[100];
printf("请输入一个字符串(不超过99个字符): ");
fgets(input, sizeof(input), stdin); // 注意fgets处理换行符
input[strcspn(input, "\n")] = '\0'; // 去除fgets读取的换行符
int m;
printf("请输入要复制的起始位置(从1开始): ");
scanf("%d", &m);
if (m <= 0 || m > strlen(input)) {
printf("错误:起始位置必须大于0且小于或等于字符串长度。\n");
return 1;
}
copy_chars(input, m - 1, result); // 函数参数是从1开始计数,所以m - 1
printf("复制的结果是: %s\n", result);
return 0;
}
// 被调用的函数,完成字符串的复制
void copy_chars(char* src, int start, char* dst) {
if (start >= 0 && start < strlen(src)) { // 检查起始位置是否合法
strncpy(dst, src + start, strlen(src) - start); // 复制指定长度的子串
dst[strlen(src) - start] = '\0'; // 结束后添加终止符
} else {
printf("错误:起始位置超出源字符串范围。\n");
}
}
```
**输入输出样例**:
如果输入字符串 "Hello, world!" 和起始位置 `m=7`,则输出将是 `"world!"`。
**相关问题--:**
1. 如何使用`fgets`函数处理用户输入?
2. `strcspn`函数的作用是什么?
3. `strlen`和`strncpy`函数分别有什么作用?
阅读全文