解题思路:
有一字符串,包含n个字符。写一函数,将此字符串中从第m个字符开始的全部字符复制成为另一个字符串。首先定义一个n表示字符串包含的字符个数,然后定义一个字符数组str保存字符串(在C语言中,没有字符串数据类型,所以字符串需要保存在字符数组中),然后定义一个m表示从字符的第m个字符开始往后生成一个新的字符串。在代码中用循环输出新产生的字符串,从m-1开始循环是因为在数组中,下标是从0开始计的,所以我们平时说的第m个数在数组中也就是第m-1个数。

注意事项:
在本道题中,输入字符串的时候我没有使用gets直接接受是因为gets和scanf连用时会出现错误,为什么会出现问题呢?我们以本道题为例来解释这一问题:

在代码中,首先我们用scanf接受一个数字6作为n的值,但是我们并不是只输入了一个数字6,还有一个回车。回车是scanf结束的标志,但是却不被scanf接受,那么多出来的回车去哪了呢,如果用gets来输入字符串,那么第一个scanf结束时输入的回车就回被get接受,但是回车也是gets结束的标志,然后第二步输入的字符串就回被下一行的scanf接受,但是这一行的scanf接受的应该是一个整数,但是我们却传入了一个字符串,所以就会出错。因此这里最好不要使用gets。可以直接使用scanf("%s",&str);来接受一个字符串。
参考代码:

#include<stdio.h>
int main()
{
    int n;
    char str[100];
    int m;
    scanf("%d",&n);
    scanf("%s",&str);
    scanf("%d",&m);
    for(int i=m-1;i<n;i++)
    {
        printf("%c",str[i]);
    }
    return 0;
}


点赞(0)
 

0.0分

26 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 6 条评论

我真的很谢 2年前 回复TA
就喜欢讲内层原因的。赞赞赞
江雪沉月 2年前 回复TA
不太懂题目中需要输入字符串长度n干嘛。。。
#include<stdio.h>
#include<string.h>
void COPY(char a[],int n)
{
	int len=strlen(a);
	char b[200];
	int tag=0;
	for(int i=n-1;i<len;i++)
	{
		b[tag]=a[i];
		tag++;
	}
	for(int j=0;j<tag;j++)
		printf("%c",b[j]);
}
int main()
{
	int n;
	scanf("%d",&n);
	getchar();
	char a[200];
	gets(a);
	int x;
	scanf("%d",&x);
	COPY(a,x);
    return 0;
}
顾自 2年前 回复TA
加个getchar将回车吸收,下面就可以用gets了
H2230819052 2年前 回复TA
@H2230819052 #include<stdio.h> int main() { 	int i,n,m; 	char a[100]; 	scanf("%d",&n); 	for(i=0;i<n+2;i++) 	{ 		 scanf("%c",&a[i]); 	} 	scanf("%d",&m); 	for(i=m;i<n+1;i++)    	printf("%c",a[i]);    	return 0; }这是改了以后的
H2230819052 2年前 回复TA
好兄弟,我在做的时候就很纳闷这个事情,想不出原因在哪里
#include<stdio.h>
int main()
{
	int i,n,m;
	char a[100];
	scanf("%d",&n);
	for(i=0;i<n+1;i++)
	{
		 scanf("%c",&a[i]);
	}
	scanf("%d",&m);
	for(i=m-1;;i++)
    if(a[i]=='\0') break;
    else	printf("%c",a[i]);
}
我改成这样就对了,但是不知道原因,没想到进来找一下,居然找到原因,爱炸你了
diaomao 2年前 回复TA