Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
0 / 0 / 0
Регистрация: 13.03.2011
Сообщений: 25
1

Как считать из stdin текст, пока не будет нажато Ctrl+D

07.05.2011, 17:06. Показов 2601. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
как считать из stdin текст, пока не будет нажато Ctrl+D?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.05.2011, 17:06
Ответы с готовыми решениями:

Как в <textarea> обработать событие 'нажато Ctrl+Enter'?
Как в &lt;textarea&gt; обработать событие 'нажато Ctrl+Enter'?

Установить курсор в ячейку так, как если было бы нажато сочетание клавиш Ctrl+Home
Господа программисты, хелп плиз В приложенном файле, при нажатии ctrl+home курсор устанавливается...

Как считать числа из stdin в Windows?
Есть файл sum2.dat. В нем записаны 4 числа: 1 2 3 4 Программу вот так запускаю: hello.py &lt;...

Как считать данные из STDIN напрямую?
Как считать данные из STDIN напрямую?

6
4773 / 2582 / 894
Регистрация: 29.11.2010
Сообщений: 5,591
08.05.2011, 08:45 2
В качестве примера.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
  char buffer[4096];
 
  // fgets вернет NULL при ошибке или eof.
  while (fgets(buffer, 4096, stdin) != NULL) {
    // Ввод находится в buffer, вместе с символом переноса строки
    // можно, например, избавиться от символа переноса
    buffer[strlen(buffer) - 1] = '\0';
    printf("%s\n", buffer);
  }
 
  // проверить на ошибку
  if (ferror(stdin))
    printf("An error has occured");
0
5 / 5 / 0
Регистрация: 20.03.2011
Сообщений: 180
08.05.2011, 08:57 3
Если fgetc считывает ВСЮ строку до \n или до максимального установленного символа то почему тут
выполняется цикл 3 раза
C++
1
2
3
4
5
6
7
8
char load_string[2];
                char string[255];
                string[0]='\0';
                while(! feof(file) && strcmp(load_string, "\n")!=0)  // schitivaem kolichestvo mashin v faile
                {
                        fgets( load_string, 2 , file );
                        strcat(string, load_string);
                }
В этом цикле мы считываем 1 строку В файле находится

20
qwe,123,123,123,123,123,me
ert,123,123,123,123,123,123
qwe,123,123,123,123,123,me
ert,123,123,123,123,123,123
qwe,123,123,123,123,123,me
ert,123,123,123,123,123,123
qwe,123,123,123,123,123,me
ert,123,123,123,123,123,123
qwe,123,123,123,123,123,me
ert,123,123,123,123,123,123
qwe,123,123,123,123,123,me
ert,123,123,123,123,123,123
qwe,123,123,123,123,123,me
ert,123,123,123,123,123,123
qwe,123,123,123,123,123,me
ert,123,123,123,123,123,123
qwe,123,123,123,123,123,me
ert,123,123,123,123,123,123
qwe,123,123,123,123,123,me
ert,123,123,123,123,123,123
0
3528 / 2686 / 334
Регистрация: 11.03.2009
Сообщений: 6,169
08.05.2011, 09:11 4
.Malek., попробуйте разобраться с условием цикла.
1
5 / 5 / 0
Регистрация: 20.03.2011
Сообщений: 180
08.05.2011, 10:19 5
А все я понял fgets копирует по символьно из за того что второй аргумент равен 2. Затем сравниваем с while и он будет выполняться до тех пока пока условие истинно.
0
0 / 0 / 0
Регистрация: 13.03.2011
Сообщений: 25
08.05.2011, 19:49  [ТС] 6
Цитата Сообщение от lemegeton Посмотреть сообщение
В качестве примера.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
  char buffer[4096];
 
  // fgets вернет NULL при ошибке или eof.
  while (fgets(buffer, 4096, stdin) != NULL) {
    // Ввод находится в buffer, вместе с символом переноса строки
    // можно, например, избавиться от символа переноса
    buffer[strlen(buffer) - 1] = '\0';
    printf("%s\n", buffer);
  }
 
  // проверить на ошибку
  if (ferror(stdin))
    printf("An error has occured");
А, если символов больше 4096? Ничего?
0
5 / 5 / 0
Регистрация: 20.03.2011
Сообщений: 180
08.05.2011, 19:59 7
4096 - это максимальное количество которое он может считать когда дойдет до 4097 функция прикатит считывание
#include <stdio.h>
char *fgets(char *str, int n, FILE *fp)
Считывает литеры из потока fp в строку по указателю str. Чтение заканчивается, когда встречается литера `\n' (новая строка), конец файла, возникает ошибка чтения или число прочитанных литер достигает n-1. Строка завершается 0. Литера '\n' (новая строка) включается в строку (перед 0).
1
08.05.2011, 19:59
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.05.2011, 19:59
Помогаю со студенческими работами здесь

Как считать число из stdin для дальнейшего использования
Использую NASM под OCUNIX

Считать произведение чисел до тех пор, пока не будет введено число, по модулю больше, чем 5
Написать программу, которая будет вводить числа и считать их произведение до тех пор, пока не будет...

Кнопка должна быть неактивной, пока TextBox не будет содержать определенный текст
Как сделать так, чтобы кнопка не была активной, пока, скажем, в текстовом поле textBox1.Text не...

Текст с Memo1 ctrl+c и ctrl+v в определённую программу автоматически
Текст с Memo1 ctrl+c и ctrl+v в определённую программу автоматически. Допустим вводим в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru