いくつかの特殊文字 (&、|、<、>) の間にスペースを追加するループを実行しています。次のコードは、特殊文字の前後にスペースを正常に追加します。
char keys[] = "<>&|";
int i = strcspn (input,keys);
appenda(input, " " , i);
appenda(input, " " , i+2);
上記のコードは、入力 "asdf&asdf" を "asdf & asdf" に変換します。
ただし、私の目標は、複数の特殊文字 (「asdf&asdf&asdf」など) を使用する場合でも、入力全体のすべての特殊文字に対してそれを行うことです。だから私はwhileループを作りました:
char keys[] = "<>&|";
int i = strcspn (input,keys);
while(i < strlen(input)){
appenda(input, " " , i);
appenda(input, " " , i+2);
i = strcspn (input,keys);
}
それでも、今コードを実行すると、「* **スタック破壊が検出されました* **」が返されます
これが何を意味し、どのように回避するかについてのアイデアはありますか?
EDIT Appenda は、指定されたポイントで文字列を別の文字列に挿入します。3 つの引数を取ります。1 番目は挿入する文字列、2 番目は挿入する文字列、3 番目はインデックスです。したがって、 appenda(ABCD, X, 2) は AXBCD を返します