Сканирование строки, включая пробелы в C - PullRequest
3 голосов
/ 24 ноября 2010

В моем коде:

scanf("%s", &text);
printf("%s\n", text);

Ввод:

hi how are you

Выход:

hi

а не

hi how are you

чтоя могу сделать это исправить?

Ответы [ 3 ]

3 голосов
/ 24 ноября 2010

Посмотрите на fgets

Функция fgets () читает не более одного меньше, чем количество символов указанный из данного потока и сохраняет их в строке s.Reading останавливается, когда перевод строки символ найден в конце файла или ошибка. Новая строка, если таковая имеется, сохраняется. Если какие-либо символы читаются и ошибки нет, `\ 0 ' символ добавлен, чтобы закончить строка.

1 голос
/ 24 ноября 2010

Используйте fgets , чтобы получить ваш ввод:

#include <stdio.h>
#include <stdlib.h>
int main(void) {
    char text[80];
    fgets(text, sizeof(text), stdin);
    printf("%s\n", text);
}
1 голос
/ 24 ноября 2010

Полагаю, вы ищете

ssize_t getline(char **lineptr, size_t *n, FILE *stream);

, который будет читать до разделителя новой строки.Или если вы используете какой-либо другой разделитель

ssize_t getdelim(char **lineptr, size_t *n, int delim, FILE *stream);
...