Я работаю над созданием кода шифрования для класса, который непрерывно разделяет строку пополам, пока не осталось только 1 или 2 символов, в которых вы меняете местами с разделенными символами справа , Однако, когда я запускаю код, который я постоянно получаю эту ошибку:C Сегментация Неисправность в коде простого шифрования
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()' и 'strcat()' - плохая идея. Кажется, у вас также есть другие проблемы. – MikeCAT
Проблема заключается в inifinite рекурсии, потому что вы всегда называете 'encrypt (left, k);' в функции 'encrypt'. – MikeCAT