解题思路:

定义一个空数组b,将a数组m位给b【1】



注意事项:





参考代码:#include<stdio.h>
main()
{
    int i,n,m,j,k=0;
    char a[100],b[10],*p=a;
    scanf("%d",&n);
    getchar();         //带走回车符
    fgets(a,n+1,stdin);      //'\0' 还有一位
    scanf("%d",&m);
    for(j=m-1,i=0;j<n;j++,i++)
    {
       b[i]=a[j];
    }
      b[i]='\0';         //别忘啦给b数组末尾加字符串标识
   printf("%s",b);
}

点赞(14)
 

0.0分

2 人评分

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

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

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

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

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

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

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

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

评论列表 共有 5 条评论

kk 1年前 回复TA
数组传参就是传的地址
ShiSan 4年前 回复TA
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>


int main(void)
{
	char a[1024] = { 0 };
	int b,c;
	scanf_s("%d", &b);
	setbuf(stdin, NULL);
	for (int i = 0; i < b; i++)
	{
		scanf("%c", &a[i]);
	}
	setbuf(stdin, NULL);
	scanf_s("%d", &c);
	c -= 1;
	for (int j=c; j < b; j++)
	{
		printf("%c", a[j]);
	}
	return 0;
}可以帮我看看我这个是哪里错了吗??
123 6年前 回复TA
我觉得对于这种直接用数组就可以比较简单,你动态申请内存有点复杂啦,一般free一下养成好习惯哦!
123 6年前 回复TA
@含光 几个月没打代码,竟然让我看啦好久……言归正传:你的代码我觉得应该没问题运行也没错,我直接提交也通过啦呢啊
含光 6年前 回复TA
请问我一开始没加结束符,输出的bcde倒是有,但后面总是多出一些乱七八糟的符号,这是为什么,明明开辟的空间m-n+1个char字符,为什么还会多分配出来导致乱七八糟的符号呢?求解答,给您看下我本来的代码,和您的差不多
#include<stdio.h>
int main()
{
	int n, m,i,j=0;	
	char *str,*substr;
	scanf("%d", &n);
	str = (char *)malloc((n+1) * sizeof(char));
	scanf("%s",str);
	scanf("%d",&m);
	substr= (char *)malloc((n-m+1) * sizeof(char));
	for (i = m - 1; i<n; i++)
	{
		substr[j++] = str[i];
	}
	//substr[j] = '\0';
	printf("%s", substr);
	return 0;
}



结果输出是这样滴bcde   几个其他字符