Форум программистов, компьютерный форум, киберфорум
C (Си)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.11.2020, 16:20
Ответы с готовыми решениями:

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

В последовательности символов заданной в текстовом файле, посчитать общее кол-во символов
В последовательности символов, заданной в текстовом файле, посчитать общее кол-во символов + - *

В последовательности символов, заданной в текстовом файле, посчитать общее кол-во символов
В последовательности символов, заданной в текстовом файле, посчитать общее кол-во символов + - *

Определить частоту символов в строке. Подсчитать кол-во символов повторяемых
Определить частоту символов в строке. Подсчитать кол-во символов повторяемых.

3
из племени тумба-юбма
1723 / 1251 / 247
Регистрация: 29.11.2015
Сообщений: 6,029
Записей в блоге: 12
21.11.2020, 16:29 2
Цитата Сообщение от ddddw Посмотреть сообщение
Что делать, если количество символов в строке неизвестно? Как уйти от постоянного значения n? Есть ли аналог данной функции?
Постоянное значение n, сделано намеренно, для безопасности, чтоб избежать ошибок при работе с памятью. Вы же считывайте строку в массив, но размер его вам уже известен заранее. О какой тогда неизвестности вы говорите?

Добавлено через 1 минуту
gets() - функция без ограничения, потом она была заменена на fgets()
0
0 / 0 / 0
Регистрация: 11.09.2020
Сообщений: 54
21.11.2020, 16:45  [ТС] 3
Цитата Сообщение от мама Стифлера Посмотреть сообщение
О какой тогда неизвестности вы говорите?
Допустим, что установлено 99 символов, как максимум строки в функции fgets. Открываем файл считываем первую строку, где было 50 символов. Все символы записываются. А во второй строке 200 символов, но нам это неизвестно, что там столько символов. В итоге получаем, что вторая строка считывается неполностью.
0
из племени тумба-юбма
1723 / 1251 / 247
Регистрация: 29.11.2015
Сообщений: 6,029
Записей в блоге: 12
21.11.2020, 17:04 4
Цитата Сообщение от ddddw Посмотреть сообщение
В итоге получаем, что вторая строка считывается неполностью.
Конечно не полностью, ведь строка считывается в массив, который у вас фиксированного размера.
А теперь представьте ситуацию, если вы вдруг считаете строку 200 символов, в массив длиной 99(функция gets), что у вас получится? У вас будет выход за пределы массива, следовательно остаток строки будет считываться в не определенные ячейки памяти, возможно даже в ячейки памяти, которые у вас зарезервированы под переменные. Все это приведет к ошибкам в работе программы. Чтоб такого не было и придумали fgets, чтоб конкретно указать длину считываемой строки. Хотя в fgets тоже можно указать длину строки, длиннее размера массива, но это тогда нужно быть полным идиотом )))
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.11.2020, 17:04

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Даны две строки символов. Посчитать в них кол-во символов стоящих на нечетных местах.
Даны две строки символов. Посчитать в них кол-во символов стоящих на нечетных местах.

Удалить конец строки символов. Ввести кол-во удаляемых символов , вывести результат ,String ,задачка,С++
Удалить конец строки символов. Ввести количество удаляемых символов , вывести результат на печать ....

Дана строка символов, среди которых есть двоеточия (:). Подсчитать кол-во символов между двумя двоеточиями
Пожалуйста, помогите написать код. Я понимаю только как вывести строку ПОСЛЕ двоеточия, с помощью...

Ограничения на ввод символов
Добрый день. Задача такая ограничения на вводимые данные Первый символ латинская буква,...

Ограничения на количество символов в TextBox
Как разрешить ввод в TextBox только 4 символа(не больше!)? Спасибо

Регулярные выражения и ограничения по выводу символов
Есть вот такой скрипт, но что то в нем не работает, пустой экран на выходе. Подскажите в чем ошибка...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.