Я только что купил «язык программирования C» K & R, и прилагаю все усилия, чтобы выполнять упражнения в нем (если вы знаете книгу, это упражнение 1.20).Ошибка сегментации при преобразовании вкладок в пробелы
Программа предназначена для ввода ввода с клавиатуры и преобразования символов табуляции в соответствующее количество пробелов, указанное TABLENGTH.
Код приведен ниже. Когда я пытаюсь запустить его, я получаю ошибку сегментации.
detab.c:
#include <stdio.h>
#define TABLENGTH 8
#define MAXLINE 1000
int getline(char line[], int len);
int main()
{
char line[MAXLINE];
int length;
while((length = getline(line, MAXLINE)) > 0) {
printf("%s");
}
}
int getline(char line[], int len)
{
int i = 0;
int c;
for(i = 0; i < (MAXLINE - 1) &&
((c = getchar()) != EOF && c != '\n'); i++) {
// if c is tab, replace with spaces
if(c == '\t') {
while((TABLENGTH - (i % TABLENGTH)) != 0) {
line[i] = ' ';
i++;
}
i--;
continue;
}
}
line[i] = c;
}
if(c == '\n') {
line[i] = c;
i++;
}
line[i] = '\0';
return i;
}
В какой строке находится сбой? – JeremyP
В строке 29 строка [i] = ''; согласно gdb. В цикле while есть некоторая логика. – ManWithAPlan
Посмотрите на мой обновленный ответ, я думаю, что я его прибил. –