繁体   English   中英

分段故障(核心已转储)

[英]Segmentation fault (core dumped)

下面的代码可以在'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;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM