原题链接:[编程入门]自定义函数之字符串拷贝
解题思路:
定义一个空数组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);
}
0.0分
2 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
#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; }可以帮我看看我这个是哪里错了吗??请问我一开始没加结束符,输出的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 几个其他字符