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

bool при чтении из файла - C++

Восстановить пароль Регистрация
 
eyesandsky
0 / 0 / 0
Регистрация: 03.10.2012
Сообщений: 7
05.10.2012, 22:26     bool при чтении из файла #1
задание такое
Сделайте функцию чтения из файла такой, чтобы она возвращала bool
(истина - если считали данные, ложь - если нет) и добавьте проверку
этого возвращаемого значения в main.

собственно код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void read_file(void)
{
FILE* file = fopen("arr.txt", "r"); 
 
if (file)
  {
   for(int i=0; i<n; i++)
   fscanf(file, "%d", &a[i]);
   fclose(file);
  }
}
 
int _tmain(int argc, _TCHAR* argv[])
{ 
    
 read_file();
 for(int i = 0; i<n; i++)
 cout <<a[i]<< " ";
 
...
подскажите пожалуйста как здесь работать с bool, и как добавить проверку?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.10.2012, 22:26     bool при чтении из файла
Посмотрите здесь:

Иероглифы при чтении из файла C++
Ошибка при чтении файла C++
C++ Проверка при чтении из файла
Expression при чтении из файла C++
фейл при чтении из файла C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
05.10.2012, 22:29     bool при чтении из файла #2
Цитата Сообщение от eyesandsky Посмотреть сообщение
собственно код
Форматируйте, когда код выкладываете (кнопка С++).
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void read_file(void)
 {
 FILE* file = fopen("arr.txt", "r"); 
 
 if (file)
 {
 for(int i=0; i<n; i++)
 fscanf(file, "%d", &a[i]);
 fclose(file);
 }
 }
 
 int _tmain(int argc, _TCHAR* argv[])
 { 
 
 read_file();
 for(int i = 0; i<n; i++)
 cout <<a[i]<< " ";
 
 ...
Добавлено через 2 минуты
Цитата Сообщение от eyesandsky Посмотреть сообщение
чтобы она возвращала bool
А у вас она ничего не возвращает. Что такое a, n?
eyesandsky
0 / 0 / 0
Регистрация: 03.10.2012
Сообщений: 7
05.10.2012, 22:39  [ТС]     bool при чтении из файла #3
так вот я не знаю как сделать, чтобы возвращала
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
05.10.2012, 23:14     bool при чтении из файла #4
Цитата Сообщение от eyesandsky Посмотреть сообщение
так вот я не знаю как сделать, чтобы возвращала
А если подумать?
Код
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
25
26
27
28
29
30
31
32
33
34
35
#include <cstdio>
 
bool read_file(char* pfilename, int *a, int n)
{
    FILE* file = fopen(pfilename, "r");
 
    int i = 0;
    if (file)
    {
        for( ; i < n; i++)
             if((fscanf(file, "%d", &a[i])) == EOF) break; // в случае ошибки
        fclose(file);
    }
 
    if (i == n) return true; // если считалось заданное количество
    else return false;
}
 
 int main()
 {
 const int n = 5; // сколько данных нужно считать
 char *pfilename = "arr.txt"; 
 int a[n]; // массив для считанных данных
 
 if (read_file(pfilename, a, n))
 {
    printf("Done!\n");
    for(int i = 0; i < n; i++)
    printf("%d  ", a[i]);
 }
 else printf("Bad!\n");
 
getchar();
return 0;
}
igorrr37
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
05.10.2012, 23:14     bool при чтении из файла #5
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
25
26
27
28
29
30
31
32
#include <iostream>
#include <fstream>
 
bool Read(int* arr, size_t const size)
{
    bool ret = false;
    std::ifstream ifs("in.txt");
    if(ifs.is_open())
    {
        size_t i;
        for(i = 0; i < size && ifs >> arr[i]; ++i)
        ;
        ret = (i == size);
        ifs.close();
    }
    return ret;
}
 
int main()
{
    int arr[3];
    size_t const size = sizeof(arr) / sizeof(*arr);
    if(Read(arr, size))
    {
        for(size_t i = 0; i < size; ++i)
        {
            std::cout << arr[i] << "  ";
        }
    }
    else std::cerr << "Read failed" << std::endl;
    return 0;
}
Yandex
Объявления
05.10.2012, 23:14     bool при чтении из файла
Ответ Создать тему
Опции темы

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