首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

进来看上小弟我的程序!不知道哪里有有关问题!谢了!

2012-11-10 
进来看下我的程序!不知道哪里有问题!谢了!~#includestdio.h#includestring.h#define LN80#define M80v

进来看下我的程序!不知道哪里有问题!谢了!~
#include<stdio.h>
#include<string.h>
#define LN 80
#define M 80
void strncpy(char *,char *,int);
int main(void)
{
int i,j;
char array1[LN];
char array2[M];
char c,c1;
for(i=0;i<LN;i++)
{
c=getchar();
if(c!='\n')
array1[i]=c;
else
{
array1[i]='\0';
break;
}
}
for(j=0;j<M;j++)
{
c1=getchar();
if(c1!='\n')
array2[j]=c1;
else
{
array2[j]='\0';
break;
}

}
strncpy(array2,array1,7);
puts(array2);
return 0;
}

void strncpy(char *s1,char *s2, int num)
{
int i,j,n;
i=strlen(s1);
n=strlen(s2);
if(n>=num)
{
for(j=0;j<num;j++)
{
s1[i]=s2[j];
i++;
}
}
else
{
for(j=0;j<n;j++)
{
s1[i]=s2[j];
i++;
}
s1[i]='\0';
}
}
上面是我写的程序。
题意:strncpy(s1,s2,n)函数s2复制n个字符给s1,并在必要时截断s2或为其填充额外的空字符;如果s2的长度大于或等于n,目标字符串就没有标志结束的空字符。自己编写这个函数,并在一个循环语句为这个函数提供输入的完整程序中进行测试。
我的问题:我成功的在输入了两个字符串,问题出现在复制函数那,我的运行的结果总是复制了字符串的一段后出现一段乱码,然后在乱码后面出现后面的一段!

[解决办法]
n>=num的时候也得加上s1[i] = '\0'; 

C/C++ code
    if(n>=num)    {        for(j=0;j<num;j++)        {            s1[i]=s2[j];            i++;        }        s1[i] = '\0'; //也得加上这句,应是以num为循环条件的,所以没有拷贝'\0'    } 

热点排行