c を学び始めたところです。私は演習を行っていますが、質問は次のとおりです。
ある文字列を別の文字列に挿入するために呼び出される関数を作成します。関数insertString
の引数は、ソース文字列、挿入する文字列、および文字列を挿入するソース文字列内の位置で構成する必要があります。insertString (text, "per", 10);
そのため、最初に定義された text を使用して呼び出すと、 text 内に から始まる"the wrong son"
文字列"per"
が挿入されます。したがって、関数が返された後、text[10]
文字列"the wrong person"
は text 配列内に格納されます。
#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
ます。それが正しいか間違っているかはわかりません。
このエラーを回避する方法はありますか?また、ポインターはまだわかりません。教科書の次の章にあります。
これで何か助けていただければ幸いです。