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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
Pinokio
2 / 2 / 0
Регистрация: 14.09.2012
Сообщений: 83
#1

Потоковый ввод/вывод - C++

01.04.2013, 18:44. Просмотров 1198. Ответов 14
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <stdio.h>
 
using namespace std;
 
int main(int argc, char* argv[])
{
    FILE* in = fopen("xxx.txt", "rt");
    FILE* out = fopen("yyy.txt", "wt");
    if (!in)
        return 0;
    while(!feof(in))
        fputc(fgetc(in), out);
    fcloseall();
    return 0;
}
не видит функцию fcloseall() (использую mingw g++) пишет. 'fcloseall' was not declared in this scope
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Friday
ну и долго меня небыло...
61 / 57 / 8
Регистрация: 24.03.2013
Сообщений: 173
01.04.2013, 19:06     Потоковый ввод/вывод #2
Цитата Сообщение от Pinokio Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <stdio.h>
 
using namespace std;
 
int main(int argc, char* argv[])
{
    FILE* in = fopen("xxx.txt", "rt");
    FILE* out = fopen("yyy.txt", "wt");
    if (!in)
        return 0;
    while(!feof(in))
        fputc(fgetc(in), out);
    fcloseall();
    return 0;
}
не видит функцию fcloseall() (использую mingw g++) пишет. 'fcloseall' was not declared in this scope
скачай нормальный компилятор, и твои проблемы будут решены

Добавлено через 33 секунды
vs2010express отлично видит, запускает
Pinokio
2 / 2 / 0
Регистрация: 14.09.2012
Сообщений: 83
01.04.2013, 19:16  [ТС]     Потоковый ввод/вывод #3
Блин, а что с g++?
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,587
Записей в блоге: 12
01.04.2013, 21:14     Потоковый ввод/вывод #4
Цитата Сообщение от Pinokio Посмотреть сообщение
fcloseall()
по моему это не стандартная функция и работать она не должна(ну может)
Friday
ну и долго меня небыло...
61 / 57 / 8
Регистрация: 24.03.2013
Сообщений: 173
01.04.2013, 21:22     Потоковый ввод/вывод #5
Цитата Сообщение от Van111 Посмотреть сообщение
по моему это не стандартная функция и работать она не должна(ну может)
ну у меня запустилось, возможно нестандартная функция, можно ведь её заменить...
alsav22
5415 / 4811 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
01.04.2013, 21:58     Потоковый ввод/вывод #6
Цитата Сообщение от Friday Посмотреть сообщение
можно ведь её заменить...
C++
1
2
fclose(in);
fclose(out);
Friday
ну и долго меня небыло...
61 / 57 / 8
Регистрация: 24.03.2013
Сообщений: 173
01.04.2013, 22:12     Потоковый ввод/вывод #7
Цитата Сообщение от alsav22 Посмотреть сообщение
C++
1
2
fclose(in);
fclose(out);
по-моему ТС не этого хочет. Ему нужна функция, которая закрывает все за 1 раз...
ну допустим тут 100 файлов открыть нужно, неудобно будет их закрывать таким образом

З.Ы. ИМХО
alsav22
5415 / 4811 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
01.04.2013, 22:26     Потоковый ввод/вывод #8
Цитата Сообщение от Friday Посмотреть сообщение
по-моему ТС не этого хочет. Ему нужна функция, которая закрывает все за 1 раз...
Хотеть не вредно... Если компилятор не поддерживает?
Цитата Сообщение от Friday Посмотреть сообщение
ну допустим тут 100 файлов открыть нужно, неудобно будет их закрывать таким образом
C++
1
2
3
4
5
FILE* arr[100] = {in, out, ...};
...
for (int i = 0; i < 100; ++i)
      fclose(arr[i]);
...
Pinokio
2 / 2 / 0
Регистрация: 14.09.2012
Сообщений: 83
01.04.2013, 22:31  [ТС]     Потоковый ввод/вывод #9
Вообще должна поддерживаться и функция должна быть в stdio.h. этот пример был взят из книги. по идее она стандартная.
alsav22
5415 / 4811 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
01.04.2013, 22:38     Потоковый ввод/вывод #10
Цитата Сообщение от Pinokio Посмотреть сообщение
по идее она стандартная.
Навряд ли...
Friday
ну и долго меня небыло...
61 / 57 / 8
Регистрация: 24.03.2013
Сообщений: 173
01.04.2013, 22:40     Потоковый ввод/вывод #11
Цитата Сообщение от Pinokio Посмотреть сообщение
Вообще должна поддерживаться и функция должна быть в stdio.h. этот пример был взят из книги. по идее она стандартная.
не все книги следуют стандарту с++, в книгах часто бывают опечатки
Pinokio
2 / 2 / 0
Регистрация: 14.09.2012
Сообщений: 83
01.04.2013, 22:42  [ТС]     Потоковый ввод/вывод #12
http://msdn.microsoft.com/ru-ru/library/ms235374.aspx ну вот мсдн, позикс ее не рекоментдует, но и не запрещает
Friday
ну и долго меня небыло...
61 / 57 / 8
Регистрация: 24.03.2013
Сообщений: 173
01.04.2013, 22:43     Потоковый ввод/вывод #13
Цитата Сообщение от alsav22 Посмотреть сообщение
C++
1
2
3
4
5
FILE* arr[100] = {in, out, ...};
...
for (int i = 0; i < 100; ++i)
      fclose(arr[i]);
...
как вариант, но все же стандартной функции похоже нету
Pinokio
2 / 2 / 0
Регистрация: 14.09.2012
Сообщений: 83
01.04.2013, 22:43  [ТС]     Потоковый ввод/вывод #14
хм... а вот с _fcloseall() прога отработала. не понимаю
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.04.2013, 23:28     Потоковый ввод/вывод
Еще ссылки по теме:

C++ Потоковый ввод из файла вместе с классом. Не пойму в чем причина
Потоковый ввод-вывод. В уже созданном файле необходимо найти и заменить некоторую запись C++
Потоковый вывод в никуда C++
Потоковый ввод из файла C++
C++ потоковый ввод с консоли

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

Или воспользуйтесь поиском по форуму:
kravam
быдлокодер
1690 / 877 / 44
Регистрация: 04.06.2008
Сообщений: 5,395
01.04.2013, 23:28     Потоковый ввод/вывод #15
Цитата Сообщение от Pinokio Посмотреть сообщение
хм... а вот с _fcloseall() прога отработала. не понимаю
Да ну чё непонятного?
C++
1
2
//stdio.h
_CRTIMP int __cdecl __MINGW_NOTHROW _fcloseall (void);
Вот и всё. То что в других местах называется fcloseall, в твоей и моей версии называется _fcloseall. Проверка:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include<stdio.h>
#include<windows.h>
 
int main(void)
{
 SetConsoleCP(1251);
 SetConsoleOutputCP(1251);
 
   FILE *fp1,*fp2;
   int streams_closed;
   /* открыть два потока */
   fp1 = fopen("DUMMY.ONE","w");
   fp2 = fopen("DUMMY.TWO","w");
   /* закрыть открытые потоки */
   streams_closed = _fcloseall();
   if(streams_closed == EOF)
      /* вывести сообщение об ошибке */
      perror(" Ошибка ");
   else
      /* вывести результат работы функции */
      printf("Было закрыто %d потока\n",streams_closed);
   getchar ();
   return 0;
}
Friday, и не фиг тут на компилятор гнать
Yandex
Объявления
01.04.2013, 23:28     Потоковый ввод/вывод
Ответ Создать тему
Опции темы

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