大神看看我这个C语言程序错哪里了。

#include<stdio.h>voidjiequ(chara[],charb[],intm,intn);intmain(){chara[100],b[100];int... #include <stdio.h>
void jiequ(char a[],char b[],int m,int n);
int main()
{
char a[100],b[100];
int m,n;
printf("请输入一个字符串\n");
gets(a);//gets()函数用于读取字符串,字符串在其末尾会自动添加'\0'
printf("请输入你想要得到的新字符串的位置:\n");
scanf("%d",&m);
printf("请输入你想要得到的字符串的长度:\n");
scanf("%d",&n);
jiequ(a,b,m,n);
puts(b);
return 0;
}
void jiequ(char a[],char b[],int m,int n)
{
int i;
for(i=0;i<n;i++)
{
b[i]=a[m];
m++;
}
b[m]=0;
}
怎么还有会乱码。‘\0’不可能再存在乱码了啊
展开
 我来答
ylcqucc
2014-12-13 · TA获得超过1436个赞
知道小有建树答主
回答量:862
采纳率:0%
帮助的人:340万
展开全部

追问
为什么是B[I]不是B[M]???求赐教!!!
追答
因为提取出来的字符串的长度为i,然后数组的下标从0开始,所以提出来的字符串的最后一个字符为i-1,让数组b中存储的是一个字符串,所以b[i]=0。

而m是提取字符的位置。b[m]没有什么意义,而a[m]有意义,从数组a中这个字符开始提取字符
时欢悦0BF
2014-12-13 · TA获得超过609个赞
知道小有建树答主
回答量:624
采纳率:0%
帮助的人:729万
展开全部
#include <stdio.h>
void jiequ(char a[],char b[],int m,int n);
int main()
{

char a[100],b[100];
int m,n;
printf("请输入一个字符串\n");
gets(a);//gets()函数用于读取字符串,字符串在其末尾会自动添加'\0'
printf("请输入你想要得到的新字符串的位置:\n");
scanf("%d",&m);
printf("请输入你想要得到的字符串的长度:\n");
scanf("%d",&n);
jiequ(a,b,m,n);
puts(b);
printf("%s\n", b);
return 0;
}
void jiequ(char a[],char b[],int m,int n)
{
int i;
for(i=0;i<n;i++)
{
b[i]=a[m];
m++;
}

b[i]=0;   // b[i]才正确,m是a[]中的最后一字符
}
追问
啊。为什么M不行啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式