Я пишу функцию для чтения ввода символов, которая должна потреблять ведущие белые пробелы, прежде чем она начнет обращать внимание на остальную введенную строку. Я успешно прочитал ведущие символы пробела ввода, если они существуют. Но для жизни меня я не могу понять, когда получаю seg-ошибки, когда пытаюсь прочитать остальную часть строки. Я использую ANSI C. Вот мой код:Чтение ввода в массив с использованием getchar() в c
void readCharLine(char **line_address) {
int c;
int index = 0;
*line_address = malloc(35 * sizeof(char));
c = getchar();
/*Consume white spaces*/
while ((c == ' ') && (index < 35)) {
c = getchar();
index++;
}
c = getchar();
/*read rest of line*/
while(c != '\n') {
*line_address[index] = c;
c = getchar();
index++;
}
}
Я называю readCharLine следующим образом:
readCharLine(&node -> input);
где узел объявляется структура выглядит следующим образом:
/*Node declaration*/
typedef struct {
char *input;
struct Node *next;
} Node;
Спасибо!
Обратите внимание, что вы выбрасываете первый (возможно, только) непустой символ. Вам также необходимо проверить EOF (вы используете 'int c;' что хорошо - это позволяет вам надежно проверять EOF). Вы можете посмотреть '' и 'isspace()' или 'isblank()'. –
[исправить образец] (http://ideone.com/P9R8sD) – BLUEPIXY