麻烦大神帮我解释一下下面的有关C语言编程中的问题,,谢谢!!!

(1)为什么Puts(first)输出来的还是没有连接前的字符串啊?#include<stdio.h>#include<string.h>#defineN80voidMy... (1)为什么Puts(first)输出来的还是没有连接前的字符串啊?
#include<stdio.h>
#include<string.h>
#define N 80
void MyStrcat(char dstStr[], char srcStr[]);
int main()
{
char first[2*N]; /* 这个数组应该足够大,以便存放连接后的字符串 */
char second[N];
printf("Input the first string:");
gets(first);
printf("Input the second string:");
gets(second);
printf("The result is:");
puts(first);
return 0;
}
void MyStrcat(char dstStr[], char srcStr[])
{
int n,i;
n=strlen(dstStr);
for(i=0;srcStr[i]!='\0';i++,n++)
{
dstStr[n+1]=srcStr[i];
}
dstStr[n+1]='\0';
}

(2)为什么Puts(b)根本就不会输出任何字符串呢??
#include<stdio.h>
#include<string.h>
#define N 80
void InverStr(char dstStr[],char srcStr[]);

int main()
{
char a[N],b[N];
printf("Input a string:");
gets(a);
InverStr(b,a);
printf("字符串逆序后为:");
puts(b);
return 0;
}
void InverStr(char dstStr[],char srcStr[])
{
int i,j,n;
n=strlen(srcStr);
i=n-1;
for(j=0;i>=0;i--,j++)
{
dstStr[j]=srcStr[n];
}
dstStr[j]='\0';
}
展开
 我来答
ThanksSunshine
2015-01-07
知道答主
回答量:4
采纳率:0%
帮助的人:4.5万
展开全部
1、主函数中没有调用MyStrcat函数,而且

void MyStrcat(char dstStr[], char srcStr[])
{
int n,i;
n=strlen(dstStr);
for(i=0;srcStr[i]!='\0';i++,n++)
{
dstStr[n+1]=srcStr[i];//这里应该改为dstStr[n]=srcStr[i]; 因为这里dstStr[n] == ‘/0’的。如果你从
//n+1开始的话,这你的两个字符串中间会隔着一个'/0'。puts函数读取的时候 //到第一个'/0'就会停止了,相当于没有连上

dstStr[n+1]='\0';
}

2、
void InverStr(char dstStr[],char srcStr[])
{
int i,j,n;
n=strlen(srcStr);
i=n-1;
for(j=0;i>=0;i--,j++)
{
dstStr[j]=srcStr[n]; //这里应该是dstStr[j]=srcStr[i]; 你看一下是不是粗心打错了
}
dstStr[j]='\0';
}
水里风
2015-01-07 · TA获得超过1528个赞
知道小有建树答主
回答量:1294
采纳率:80%
帮助的人:512万
展开全部
(1)因为主函数米有调用MyStrcat函数,就没有连接

(2)dstStr[j]=srcStr[n];这一句要改为dstStr[j]=srcStr[i];,不然永远将a字符串最后一个字符也就是‘\n’赋值到b的各个元素里去里面去,,最后b无法实现a的倒序存放
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式