사전에서 가능한 모든 문자열을 생성하고 암호화하여 일부 저장된 해시와 비교할 수있는 재귀 함수가 있습니다.함수 호출시 분할 오류가 발생했습니다.
이전에 암호의 최대 길이에 대한 미리 정의 된 값이 있었지만 argv[1]
으로 변경하려고했습니다. 그러나 프로그램을 실행할 때 설명이없는 Segmentation Fault
이 표시됩니다.
덧붙여서, 포함되어있는 것은 모두 포함되어 있습니다 만, 다소 골치가 아팠기 때문에 나는 포함시키지 않았습니다.
int recur(char * mot , char * tab,int l,int max_l)
{
// Because this was an exercice we had to do in class , i deleted this part
// so some of my classmates dont copy/paste my code
// if you are interested , contact me
int main(int argc, char *argv[])
{
char letters[36] = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','0','1','2','3','4','5','6','7','8','9'};
char s[10]="";
s[9]='\0';
int l=0;
int max_l;
sscanf (argv[1],"%d",&max_l);
printf("max_l : %i\n",max_l);
printf("Debut ! \n");
recur(s,letters,l,max_l);
}
감사합니다.
코드에 많은 문제가 있습니다. 그들 중 하나는'recur' 함수에 아무것도 반환하지 않는 실행 경로가 있다는 것입니다. –
충고 한 조각. 세분화 오류가 발생할 때 가장 먼저해야 할 일은 디버거로 코드를 디버깅하는 것입니다. 디버거를 사용하지 않고 코드를 사용하지 않거나 사용법을 모르는 경우 변수의 값을 다른 위치에 인쇄하여 변경 내용을 알 수 있습니다 그리고 프로그램이 멈춘 곳 –
모든 경고와 디버그 정보로 코드를 컴파일하십시오 :'gcc -Wall -Wextra -g'와 [GCC] (http://gcc.gnu.org/). 코드를 개선하여 경고가 표시되지 않도록하십시오. 모든 조언을 위해 디버거'gdb' –