Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.83/202: Рейтинг темы: голосов - 202, средняя оценка - 4.83
11 / 11 / 6
Регистрация: 03.04.2011
Сообщений: 631

Как использовать функцию fgets?

12.10.2011, 15:53. Показов 43359. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Люди прочитал тут про функцию fgets() но как то понять до конца не могу поясните плиз кто понимает и работал с ней уже... А нашел такую информацию:
Функция fgets() читает из входного потока stream не более num-1 символов и помещает их в массив символов, адресуемый указателем str. Символы, читаются до тех пор, пока не будет прочитан символ новой строки или значение EOF, либо пока не будет достигнут заданный предел. По завершении чтения символов сразу же за последним из них размешается нулевой символ. Символ новой строки сохраняется и становится частью массива, адресуемого элементом str.
(что за входной поток? и как понять не более num-1 символов?)
вот такое пример был дан
Приведенная программа использует функцию fgets() для вывода содержимого текстового файла, имя которого задано первым аргументом командной строки.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])// вот тут первая переменная которая как инт обозначенна нужна?
{
   FILE *fp;// тут указатель на что? на то что fp будет работать с файлом? или не совсем так?
   char str[128];//тут массив символов размером 128? так?
   
   if((fp=fopen(argv[1], "r")) == NULL) // если не прочиталось то выход?
   {
      printf("Не удаётся открыть файл.\n");
      exit(1);
   }
 
   while(!feof(fp))// цикл пока не будет достигнут конец файла
   {
      if(fgets(str, 126, fp))// вот тут не понимаю словесно можите пояснить? че куда и как?
         printf("%s", str);// ну тут вывод стоки  только что значит "%S"
   }
   fclose(fp);
 
return 0;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.10.2011, 15:53
Ответы с готовыми решениями:

Как использовать getline и fgets?
#include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;string&gt; using std::ofstream; using std::cout; using std::endl; using...

Как заменить функцию fgets на strlen и strcpy?
while (fgets(s1, sz_line, fp)) //будет прочитано 120 символов { // считаем длину текущей строки , будет в j j = 0; while...

Как в C++ использовать функцию inc(); ?
подскажите пожалуйста, как вот это: inc(b); можно сделать в С++?

26
11 / 11 / 6
Регистрация: 03.04.2011
Сообщений: 631
14.10.2011, 16:59  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Van111 Посмотреть сообщение
ну если память не изменяет то fgetc
как именно посмотри мой код можите изменить и показать наглядно?
0
290 / 193 / 23
Регистрация: 03.08.2011
Сообщений: 2,824
Записей в блоге: 12
14.10.2011, 17:54
ну может так
char s[3]=0;
for(int i=0;i<3;i++)
{
s[i]=fgetc(f);
fcgets(0,1000,f)
}
ну проверь это

Добавлено через 9 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
   FILE *f;
    f=fopen("c:\\keys.txt","rt");
    std::cout << f;
    char s[3],ss[100];
    for(int i =0;i<3;i++)
    {
    s[i]=fgetc(f);
    fgets(ss,100,f);
    }
    s[3]=0;
    std::cout <<s; 
    getch();
    return 0;
вот рабочий код

Добавлено через 1 минуту
так как я не нашёл дыру в которую можно было просто выплюнуть даные которые получает функция fgets то я создал строку s[100]

Добавлено через 2 минуты
Цитата Сообщение от Van111 Посмотреть сообщение
так как я не нашёл дыру в которую можно было просто выплюнуть даные которые получает функция fgets то я создал строку s[100]
а некто не знает что можно передать функции fgets в качестве первого параметра ну я имею в виду какой нибудь левый адрес
0
Эксперт С++
 Аватар для Nameless One
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
14.10.2011, 18:01
C
1
2
3
FILE* fp = /* ... */;
int c;
fscanf(fp, "%d", &c);
0
1080 / 1007 / 107
Регистрация: 28.02.2010
Сообщений: 2,889
14.10.2011, 18:04
Nameless One, Вы наверно fscanf хотели, а не fgets.
1
14.10.2011, 18:07

Не по теме:

Да, спасибо, поправил

0
11 / 11 / 6
Регистрация: 03.04.2011
Сообщений: 631
15.10.2011, 08:31  [ТС]
Цитата Сообщение от Nameless One Посмотреть сообщение
&c
а зачем перед с знак оперсанда? она же вроде не задавалась как указатель
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
15.10.2011, 14:55
Цитата Сообщение от lexflax Посмотреть сообщение
а зачем перед с знак оперсанда?
Потому что в функцию передаётся адрес переменной, чтобы извне по этому адресу можно было изменить значение этой переменной.

Цитата Сообщение от lexflax Посмотреть сообщение
она же вроде не задавалась как указатель
& к указателям не имеет никакого отношения. Эта операция возвращает адрес переменной, а адрес можно взять как у обычной переменной, так и у указателя. Вот с разыменованием (операция *) будт проблемы, она может применяться только к указателям.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.10.2011, 14:55

Как использовать функцию?
Помогите, плз. Беда с функциями, не совсем понимаю как их вызывать. Вот запилил я, например, прогу, которая задает рандомный массив и юзает...

Как использовать функцию
Как использовать функцию, у которой тип возвращаемого значения: a. Void b. Не void (любой другой тип, например QString)

Как использовать функцию НОРМСТРАСП
как эту функцию записать в с++ ??

Как использовать функцию flush()?
для проверки правильности вводимых данных использую такой код #include &lt;stdio.h&gt;; #include &lt;iostream&gt;; using namespace std;...

Как использовать функцию getline
есть программа структура о книгах, с поиском по дате из-за функции cin можно ввести только одно слово так как после пробела cin не...


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

Или воспользуйтесь поиском по форуму:
27
Ответ Создать тему
Новые блоги и статьи
сукцессия 14. Обновленная схема модели
anaschu 28.06.2026
ГЛОБАЛЬНАЯ ОПИСАТЕЛЬНАЯ СПЕЦИФИКАЦИЯ ЭКОСИСТЕМНОЙ МОДЕЛИ «SOIL CHEMISTRY & MYCORRHIZA 2. 0» https:/ / ibb. co/ NnkGpfMd Представленная интегрированная схема описывает непрерывную нелинейную. . .
сукцессия 13. Питон модель трехзонного мицелия, пока что в основном арбускулярного
anaschu 28.06.2026
## Разработка агентной модели микоризной сукцессии: от выявления артефактов к созданию комплексной системы ### Аннотация Представлено исследование по разработке агентной модели микоризной. . .
сукцессия 12. краткий список проверок модели перед запуском.
anaschu 28.06.2026
Скрытые отказы в моделях систем динамики (SD-models) экологических систем: два случая из практики Контекст Разбирался прототип модели систем динамики (SD-модели) микоризной сукцессии: пять. . .
Сукцессия 11. Проверка орудий перед войной: разработка через тестирование
anaschu 28.06.2026
Как не дать модели соврать самой себе: проверки для симуляции микоризной сукцессии Введение Когда вы строите математическую модель живой системы — грибов, растений, почвы — главная опасность. . .
10 сукцессия. Питон код войны грибов и растений
anaschu 27.06.2026
import numpy as np class PlantAgent: def __init__(self, name, strategy, initial_biomass): self. name = name self. strategy = strategy # "greedy" (широколиственные) или. . .
сукцессия 9. Математика подлости: как растения предали грибных друзей
anaschu 27.06.2026
Статья 2. Глобальная фосфорная война: эволюционно-экономические механизмы распределения биомов Земли Введение: Экологический рынок как игра с нулевой суммой Традиционная экология долгое время. . .
сукцессия 8. Как я спорил с ИИ, которые - агенты растений и ненавистники грибов!
anaschu 27.06.2026
Статья 1. Хроники грибного восстания: как Сократов диалог разрушил академические догмы ИИ Введение: Синдром «цифрового учебника» Современные большие языковые модели (LLM) обладают колоссальным. . .
Главный вопрос моделирования сукцессии
anaschu 27.06.2026
главный вопрос. Если эктомикориза лучше добывает недоступный фосфор. И ее масса максимальна из всех. А широколиственный лес тоже имеет самую крутую биомассу. То почему не возникло их симбиоза? Это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru