C语言:每日一练

题目描述:

有一字符串,包含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;
}
原文链接:,转发请注明来源!