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

将字符串out插入字符串amobile中,该如何处理

2012-03-05 
将字符串out插入字符串amobile中将字符串out插入字符串amobile中,为什么打出的结果错误#defineMAXSIZE100v

将字符串out插入字符串amobile中
将字符串out插入字符串amobile中,为什么打出的结果错误
#define   MAXSIZE   100
void   strins(char   *,char   *,int);
void   main()
{
char   string1[MAXSIZE]={ "amobile "},*s=string1;
char   string2[MAXSIZE]={ "uto "},*r=string2;
strins(s,r,1);
}
void   strins(char   *s,char   *r,int   i)
{
char   string[15],*temp=string;
if(!strlen(s))
strcpy(s,r);
else
if(strlen(r))
{
strncpy(temp,s,i);
strcat(temp,r);
strcat(temp,(s+i));
//strcpy(s,temp);
}
printf( "%s\n ",temp);
}

[解决办法]
#include <stdio.h>
#include <string.h>
#define MAXSIZE 100
void strins(char *,char *,int);
void main()
{
char string1[MAXSIZE]={ "amobile "};
char string2[MAXSIZE]={ "uto "};
char *s=string1;
char *r=string2;
strins(s,r,1);
}

void strins(char *s,char *r,int i)
{
char string[15],*temp=string;
if(!strlen(s))
strcpy(s,r);
else
if(strlen(r))
{
strncpy(temp,s,i);
temp[i] = '\0 '; !!!!!!!注意这里
strcat(temp,r);
strcat(temp,(s+i));
//strcpy(s,temp);
}
printf( "%s\n ",temp);
}

strcat是连接两个字符串的.strncpy(temp,s,i);因为s中字符个数多于i的值1,所以那个字符串结束符号 '\0 '不会连同copy过去.


[解决办法]
是不是不初始化的字符串都应赋个结束符\0?,要不然strcat接到它总长度后面?

如果字符串中没有赋值 结束符\0,
那么 strcat 将不知道从哪里开始连接。
[解决办法]
其实这样也可以嘛:

if(strlen(r))
{
strncpy(temp,s,i);
strncpy(temp,r,strlen(r)); //strcat(temp,r);
strncpy(temp,r,strlen(s)-i+1); //strcat(temp,(s+i));
}

+1 是为了把最后面的 \0 结束符号也拷贝过来

热点排行