0 / 0 / 0
Регистрация: 11.09.2020
Сообщений: 54
|
|
1 | |
Ограничения fgets на кол-во символов21.11.2020, 16:20. Просмотров 767. Ответов 3
Метки нет Все метки)
(
Есть функция fgets, которая читает строки из файла. И есть у нее аргументы:
int fgets (char *str, int n, FILE *stream); str - указатель на массив, в который будет помещена считанная строка. n – максимально допустимая длинна считываемой строки. stream – указатель на поток данных. У этой функции есть ограничение допустимой длины строки. Что делать, если количество символов в строке неизвестно? Как уйти от постоянного значения n? Есть ли аналог данной функции?
0
|
|
21.11.2020, 16:20 | |
Ограничения кол-ва используемых ядер В последовательности символов заданной в текстовом файле, посчитать общее кол-во символов
Определить частоту символов в строке. Подсчитать кол-во символов повторяемых |
|
из племени тумба-юбма
|
|
21.11.2020, 16:29 | 2 |
Постоянное значение n, сделано намеренно, для безопасности, чтоб избежать ошибок при работе с памятью. Вы же считывайте строку в массив, но размер его вам уже известен заранее. О какой тогда неизвестности вы говорите?
Добавлено через 1 минуту gets() - функция без ограничения, потом она была заменена на fgets()
0
|
0 / 0 / 0
Регистрация: 11.09.2020
Сообщений: 54
|
|
21.11.2020, 16:45 [ТС] | 3 |
Допустим, что установлено 99 символов, как максимум строки в функции fgets. Открываем файл считываем первую строку, где было 50 символов. Все символы записываются. А во второй строке 200 символов, но нам это неизвестно, что там столько символов. В итоге получаем, что вторая строка считывается неполностью.
0
|
из племени тумба-юбма
|
|
21.11.2020, 17:04 | 4 |
Конечно не полностью, ведь строка считывается в массив, который у вас фиксированного размера.
А теперь представьте ситуацию, если вы вдруг считаете строку 200 символов, в массив длиной 99(функция gets), что у вас получится? У вас будет выход за пределы массива, следовательно остаток строки будет считываться в не определенные ячейки памяти, возможно даже в ячейки памяти, которые у вас зарезервированы под переменные. Все это приведет к ошибкам в работе программы. Чтоб такого не было и придумали fgets, чтоб конкретно указать длину считываемой строки. Хотя в fgets тоже можно указать длину строки, длиннее размера массива, но это тогда нужно быть полным идиотом )))
0
|
21.11.2020, 17:04 | |
Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.
Дана строка символов, среди которых есть двоеточия (:). Подсчитать кол-во символов между двумя двоеточиями Ограничения на ввод символов
Регулярные выражения и ограничения по выводу символов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |