コードは、以下の「TEMP」の「STR」の他のすべての要素をコピーすることでうまくいくが、それは私のセグメンテーションフォールトを与えた後、私は唯一の「* STR」をインクリメントした場合(コアダンプ)。 Iは、(「でも」第二の手紙、第四、第六、等である)。奇数の文字と同じ「偶数」配列に文字列の偶数文字の全てをコピーしようとしていた。しかし、私はときに実現増分したまま増分します。私はそれを回避する方法を本当に知らないので、関数内の別の配列に文字を格納しようとしましたが、セグメンテーション違反がありました。私はなぜ2倍の増分はOKですが、1倍ではないことは分かりません。セグメンテーションフォールト(コアダンプ)
#include <stdio.h>
#include <string.h>
#define N 100
void encrypt(const char*);
int main(void)
{
char str[N];
printf("Please enter a message: ");
gets(str);
encrypt(&str);
return 0;
}
void encrypt(const char *str)
{
int i, j, length;
char temp[N], odd[N], even[N];
length = strlen(str);
for (j = 0; *str < *str + length; *str++, *str++, j++)
{
temp[j] = *str;
}
printf("%s", temp);
}
はどのようにj'は 'N'を超えることはありません '知っているのですか? – DyZ
'* strの<* STR + length'この行が何をするか、あなたの[ラバーダック](https://en.m.wikipedia.org/wiki/Rubber_duck_debugging)に説明してください。 –
そして 'encrypt'をどのように呼び出すかを示します。 –