По какой-то причине я получаю ошибку сегмента в строке let [i] = all (4,4, 'a', 'z'); Я не могу понять, почему. Я пытаюсь поместить aaaa-zzzz в массив &, а затем сравнить значения один за другим с зашифрованным паролем. Любые советы помогут. Благодарю. Ive дал два фрагмента кода, которые дают эту проблему.Ошибка сегмента для программы массива C
char* all(int a, int n,char begin, char end){
int i, j;
int k = 0;
char *c = malloc((n+1)*sizeof(char));
char msg[] = "";
k = strlen(msg);
for(i = a; i <= n; i++)
{
for(j=0;j<i;j++) c[j]=begin;
c[i]=0;
do {
for(int g = 0; g < k; g++)
msg[g] = *c;
} while(inc(c,begin,end));
}
return c;
free(c);
}
int main(int argc, char* argv[])
{
char *result;
char **let;
int f = open("pass.txt", O_RDONLY);
if (f < 0)
return 0;
char buf[1024];
while (my_fgets(buf, sizeof(buf), f))
{
int i = 0;
let[i] = all(4,4,'a','z');
result = crypt(argv[i+1], buf);
i++;
int ok = strcmp (result, buf) == 0;
return ok ? 0 : 1;
}
free(let);
close(f);
}
Полная программа может быть найдена здесь:
По какой-то причине вы, похоже, разыскиваете неинициализированный указатель. Подсказка: пусть [i]. 'char msg [] =" "' также объявляет массив размером 1, а затем вы пишете прошлое. –
Так что я должен просто позволить [i] и не объявить его для начала? Сожалею. Я новичок в этом. – kids
Это не _сегмент_, это ошибка _сегментации_. – ForceBru