gpt4 book ai didi

简单加密代码的 C 段错误

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

我正在为类制作加密代码,该类不断将字符串分成两半,直到只剩下 1 或 2 个字符,您可以在其中与右侧的拆分字符交换。但是,当我运行代码时,我不断收到此错误:

INPUT A PHRASE: 1234
LENGTH: 4
Segmentation fault (core dumped)

下面是我的源代码,如果有人能帮我解决这个问题,我将不胜感激。

#include <stdio.h>
#include <string.h>

void encrypt(char *str, int size);

int main(){
char input[8192];
int length;

printf("INPUT A PHRASE: ");
fgets(input, 8192, stdin);
length = strlen(input) -1;
printf("LENGTH: %d\n", length);

encrypt(input, length);
printf("ENCRYPTION: %s\n", input);
return 0;
}

void encrypt(char str[], int size){

char *final;

int i;
int k = size / 2;

char *left = strncpy(left, str, k);
encrypt(left, k);

char *right = strncpy(right, str + k, size - k);
encrypt(right, size - k);

if(size <= 2 && size > 0){
final = strcat(final, right);
final = strcat(final, left);
return;
}
}

最佳答案

strncpy 将缓冲区作为第一个参数,将数据复制到其中。在你的情况下,你传递给它一个未初始化的指针:

char *left = strncpy(left, str, k);

正确的应该是这样的:

char left[SOME_SIZE];
strncpy(left, str, size); //size should not be greater than SOME_SIZE

right 变量相同。引用:strncpy

关于简单加密代码的 C 段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35180482/

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