ライブラリ関数 (学校の課題) を使用せずに 2 つの文字列を手動で連結しようとすると、バス エラーが発生します。コードは次のとおりです。
#include <stdio.h>
char *strcattest(char string1[ ], char string2[ ]);
int main() {
printf("*****STRING CONCATENATION*****\n");
printf("Hello plus Hello: %s\n", strcattest("Hello","Hello"));
printf("Hello plus Hellp: %s\n", strcattest("Hello","Hellp"));
printf("Helo plus Hello: %s\n", strcattest("Helo","Hello"));
printf("Hello plus Helo: %s\n", strcattest("Hello","Helo"));
return(0);
}
char *strcattest(char string1[ ], char string2[ ]) {
int counter = 0;
while(string1[counter]!='\0') {
counter++;
}
int str2counter = 0;
while(string2[str2counter]!='\0') {
string1[counter] = string2[str2counter];
str2counter++;
counter++;
}
string1[counter]='\0';
return string1;
}
私はいくつかの調査を行いましたが、これが機能しない理由を概念的に理解していると思います。(静的文字列に基づく変数 string1 を変更しようとして呼び出しています。)ただし、これを修正してそれ自体が動作するようにする方法がわかりません。string1 のコピーとして動作するローカル変数を strcattest 関数に導入しようとしましたが、関数からローカル変数を返すことに対してコンパイラが怒鳴りつけました。
どんな助けでも大歓迎です。ありがとう!