麻烦大神帮我解释一下下面的有关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';
} 展开
#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';
} 展开
2个回答
展开全部
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';
}
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';
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询