Cには と呼ばれる標準型がstring
なく、それをどのように定義したかを示していません。
ただし、次のように推測できます。
char *myNewKey = "";
if (keylength < length)
{
int myValue = ((length - keylength) / keylength) + 1;
for (int i = 0; i < myValue; i++)
myNewKey = strcat(key, myNewKey);
}
printf("%s", myNewKey);
の宣言を見なくても、key
トラブルが発生することがわかります。あなたが持っていると仮定しましょう:
char key[100] = "a";
ループを頻繁に反復する場合 (繰り返しになりますが、何をしようとしているのかを確認するのに十分な情報がありません —短い自己完結型の正しい (コンパイル可能な) 例 を構成するものをブラッシュアップしてください)。遅かれ早かれバッファがオーバーフローし、問題が発生したり、セグメンテーション違反が発生する可能性があります。
key
もstring
私の仮説のようなものである場合myNewKey
、あらゆる種類のスペース割り当ての問題があり、さらに読み取り専用メモリに書き込んでいる可能性があります (セグメンテーション違反とコア ダンプを取得する良い方法です)。
string
、key
およびmyNewKey
( は言うまでもなく)の他の定義についてはlength
、keylength
問題に遭遇する他の方法があります。
おそらく、ステートメント"%s\n"
内のフォーマット文字列 ( )の最後に改行を追加する必要があります。printf()
それがないと、出力がタイムリーに表示される保証はありません (それでも出力がタイムリーに表示されない可能性がありますが、ターミナル ウィンドウで実行されているプログラムは通常、各行を末尾の改行として出力します)。書かれた)。