题目描述:
有一字符串,包含n个字符。写一函数,将此字符串中从第m个字符开始的全部字符复制成为另一个字符串。
方法1:
#include <stdio.h>
#include <string.h>
#define Max 10 //字符串最大个数
int ShowStr(int n, int m,char str[])
{
for (int i = m - 1; i < n; i++)
{
printf("%c", str[i]);
}
return 1;
}
int main() {
char str[Max + 1]; // 预留一个字符用于存储字符串结束符 '\0'
printf("输入要复制的字符串(字符串长度不超过 10):");
fgets(str, sizeof(str), stdin);//stdin从键盘接收一行字符串,字符串长度超过Max,自动截断
int n = strlen(str) - 1;
int m = 0;
printf("请输入从第几个字符开始复制:");
scanf("%d", &m);
ShowStr(n, m,str);
return 0;
}
方法2:
#include <stdio.h>
#include <string.h>
#include <malloc.h>
int ShowStr(char* a,char* b,int n,int m)
{
int t = n - m + 1;
for (int i = 0; i < t; i++)
{
//把 a中下标为 m-1的字符赋值给b
b[i] = a[m - 1];
m++;
}
b[t] = '\0'; // 添加字符串结束符,printf打印遇到 \0 才会结束
printf("%s", b);
return 1;
}
int main() {
int n, m;
char* a;//原字符串
char* b;//子字符串
printf("请输入字符串长度:");
scanf("%d", &n);
printf("请输入从第几个字符开始复制:");
scanf("%d", &m);
//分配内存
a = (char*)malloc(n * sizeof(char));
b = (char*)malloc((n-m+2) * sizeof(char));//预留一个字节用于存储字符串结束符 '\0'
printf("请输入字符串:");
scanf("%s", a);
ShowStr(a, b, n, m);
return 0;
}