下面的代碼在'temp'中複製'str'中的每一個其他元素,但是如果我只增加'* str'一旦它給了我一個分割錯誤(core dumped)。 我試圖將字符串的所有偶數字母都複製到'even'數組中,與奇數字母相同('even'是第二個字母,第四個,第六個等等)。但是我意識到,當我增加它保持遞增。我真的不知道如何解決這個問題,所以我嘗試將函數存儲在函數內的不同數組中,但出現了分段錯誤。我不明白爲什麼增加兩次是可以的,但一旦沒有。分割錯誤(核心轉儲)
#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'。 –