Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 133, средняя оценка - 4.83
lexflax
10 / 10 / 1
Регистрация: 03.04.2011
Сообщений: 627
12.10.2011, 15:53     Как использовать функцию fgets? #1
Люди прочитал тут про функцию 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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.10.2011, 15:53     Как использовать функцию fgets?
Посмотрите здесь:

Как использовать функцию flush()? C++
как использовать getline и fgets? C++
Как в C++ использовать функцию inc(); ? C++
Не понимаю как использовать функцию getchar() C++
Как использовать функцию? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lexflax
10 / 10 / 1
Регистрация: 03.04.2011
Сообщений: 627
14.10.2011, 16:59  [ТС]     Как использовать функцию fgets? #21
Цитата Сообщение от Van111 Посмотреть сообщение
ну если память не изменяет то fgetc
как именно посмотри мой код можите изменить и показать наглядно?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,585
Записей в блоге: 12
14.10.2011, 17:54     Как использовать функцию fgets? #22
ну может так
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 в качестве первого параметра ну я имею в виду какой нибудь левый адрес
Nameless One
Эксперт С++
 Аватар для Nameless One
5755 / 3404 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
14.10.2011, 18:01     Как использовать функцию fgets? #23
C
1
2
3
FILE* fp = /* ... */;
int c;
fscanf(fp, "%d", &c);
Евгений М.
1033 / 974 / 53
Регистрация: 28.02.2010
Сообщений: 2,817
Завершенные тесты: 2
14.10.2011, 18:04     Как использовать функцию fgets? #24
Nameless One, Вы наверно fscanf хотели, а не fgets.
Nameless One
14.10.2011, 18:07
  #25

Не по теме:

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

lexflax
10 / 10 / 1
Регистрация: 03.04.2011
Сообщений: 627
15.10.2011, 08:31  [ТС]     Как использовать функцию fgets? #26
Цитата Сообщение от Nameless One Посмотреть сообщение
&c
а зачем перед с знак оперсанда? она же вроде не задавалась как указатель
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.10.2011, 14:55     Как использовать функцию fgets?
Еще ссылки по теме:

C++ Как использовать функцию Kbhit()?
C++ Как использовать функцию НОРМСТРАСП
C++ Указатели на функцию - как их использовать, как объявлять

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

Или воспользуйтесь поиском по форуму:
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
15.10.2011, 14:55     Как использовать функцию fgets? #27
Цитата Сообщение от lexflax Посмотреть сообщение
а зачем перед с знак оперсанда?
Потому что в функцию передаётся адрес переменной, чтобы извне по этому адресу можно было изменить значение этой переменной.

Цитата Сообщение от lexflax Посмотреть сообщение
она же вроде не задавалась как указатель
& к указателям не имеет никакого отношения. Эта операция возвращает адрес переменной, а адрес можно взять как у обычной переменной, так и у указателя. Вот с разыменованием (операция *) будт проблемы, она может применяться только к указателям.
Yandex
Объявления
15.10.2011, 14:55     Как использовать функцию fgets?
Ответ Создать тему
Опции темы

Текущее время: 03:10. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru