Предисловие: Я очень новичок в программировании и C в целом.Я прохожу K & R и пытаюсь решить упражнение 1-19.
Я не понимаю, что вызывает эту ошибку сегментации в строке j == i;.
Я пробовал различные комбинации кода, чтобы выяснить, в чем дело.
Изначально у меня был цикл, чтобы попытаться перевернуть массив символов в соответствии с упражнением, но благодаря устранению неполадок я пришел к j == i;линия.
Ничто не кажется неправильным с этими двумя значениями, но попытка сравнить их дает мне ошибку.
#include <stdio.h>
#define MAXLENGTH 1000
int reverse(char line[]);
main()
{
int c = 0;
char line[MAXLENGTH];
while ((c = reverse(line)) != EOF) {
printf("%s\n", c);
}
return 0;
}
int reverse(char line[])
{
char r[MAXLENGTH];
int i, c, j, l;
i = c = j = l = 0;
printf("BEFORE GETARRAY\n");
while ((c = getchar()) != '\n' && c != EOF) {
line[i] = c;
i++;
printf("i: %d\n", i);
}
l = i - 1;
printf("i: %d\n", i);
printf("l: %d\n", l);
printf("j: %d\n", j);
printf("BEFORE REVERSING\n");
j == i;
return c;
Я ожидаю, что сравнение завершится без ошибок.
ЕслиВы могли бы описать не только то, что не так, но и почему, чтобы я мог попробовать улучшить, это было бы замечательно.