gpt4 book ai didi

c - 段错误(核心已转储)

转载 作者:太空宇宙 更新时间:2023-11-04 08:05:11 25 4
gpt4 key购买 nike

下面的代码在复制 'temp' 中 'str' 的所有其他元素时有效,但如果我只增加 '*str' 一旦它给我一个段错误(核心转储)。我试图将字符串的所有偶数字母复制到“偶数”数组中,奇数字母也是如此。(“偶数”是第二个字母、第四个、第六个等)但我意识到,当我增加它保持增加。我真的不知道如何解决这个问题,所以我尝试将字母存储在函数内的不同数组中,但出现了段错误。我不明白为什么递增两次可以,但递增一次就不行。

#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);
}

最佳答案

我猜你真的想写这个:

for (j = 0; str < str + length; *str++, *str++, j++)

可以这样写更清楚一点:

for (j = 0; str < str + length; str++, str++, j++)

但这无论如何都是错误的,因为str < str + length始终为真。

这是你需要的:

for (j = 0; j < length; j++)
{
temp[j] = *str;
str += 2;
}

关于c - 段错误(核心已转储),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43361097/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com