我刚开始学习 c。我正在做一个练习,问题如下。
编写一个调用函数insertString
,将一个字符串插入另一个字符串。函数的参数应该包括源字符串、要插入的字符串以及要插入字符串的源字符串中的位置。因此,insertString (text, "per", 10);
使用最初定义的文本的调用"the wrong son"
导致字符串"per"
被插入到文本中,从 . 开始text[10]
。因此,在函数返回后,字符串"the wrong person"
存储在文本数组中。
#include<stdio.h>
int insertString(char[],char[],int);
int stringLength(char[]);
int main()
{
char text[]="the wrong son";
int result=insertString(text,"per",10);
if(result!=-1)
printf("string 1 is : %s \n",text);
else
printf("Not possible\n");
return 0;
}
int insertString(char a[],char b[],int pos)
{
int i=0,j=0;
int lengthA=stringLength(a);
int lengthB=stringLength(b);
if(pos>lengthA)
return -1;
for(i=lengthA;i>=pos;i--)
a[i+lengthB]=a[i];
for ( i = 0; i < lengthB; ++i )
a[i + pos] = b[i];
return 1;
}
int stringLength(char x[])
{
int length=0;
while(x[length]!='\0')
length++;
return length;
}
我已经做到了,它也在工作。但我收到一条消息abort trap : 6
。当我查看它时,我了解到这是一个错误,因为我正在写入我不拥有的内存。因为我使用了可变长度字符数组,无论在哪里,null character
都表示数组的结尾,我试图通过插入一个字符串来扩展它,这是我的理解。到目前为止我是对的吗?
我也在搬家null character
。我不知道是对还是错。
那么有没有办法解决这个错误?另外,我还不知道指针,它们在教科书的下一章。
对此的任何帮助将不胜感激。