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

Функция fread не считывает данные - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Одномерный массив( Выдаёт сумму 0 ) http://www.cyberforum.ru/cpp-beginners/thread1056638.html
Из двух массивов разной длины сформировать общий массив и вычислить сумму элементов, являющихся полными квадратами и имеющих нечетные индексы. #include "stdafx.h" #include <iostream> #include <cstdlib> #include <cmath> #include <locale.h> using namespace std; int main()
C++ Составить программу, выводящую на экран квадратную матрицу Здравствуйте. Мне необходимо составить программу, выводящую на экран квадратную матрицу порядка nxn (2<n<24). При этом матрица при n=7 должна выглядеть так (представлено под спойлером): 4 0 0 0 0 0 0 5 3 0 0 0 0 0 10 6 2 0 0 0 0 11 9 7 1 0 0 0 14 12 8 0 0 0 0 15 13 0 0 0 0 0 16 0 0 0 0 0 0 Мною была составлена программа, выводящая на экран следующую матрицу: http://www.cyberforum.ru/cpp-beginners/thread1056634.html
C++ Сумма в матрице
Очень прошу помощи, что исправить в коде чтобы он считал сумму строк матрицы, если номера строк заданы целочисленным вектором. Часть с суммой(составила только по всем строкам, не то что нужно) for (i = 0; i < n; i++) { for (j = 0; j < m; j++) temp += a; cout << temp << "\t"; }
C++ шаблон класса
Помогите написать шаблон класса gauss #pragma hdrstop #include "Unit2.h" #include <math.h> //---------------------------------------------------------------------------
C++ Переписать программу с помощью функций http://www.cyberforum.ru/cpp-beginners/thread1056610.html
Ребята, не укладываются в голове функции. Эту программу нужно изменить так, чтобы программный код, исполняющий действия пунктов меню, выполнялся в отдельных функциях (по одной на каждый пункт меню). Использование глобальных переменных не допускается. Спасибо всем, кто попытается помочь. #include "stdafx.h" #include <clocale> #include <conio.h> #include <math.h> #include <stdlib.h>...
C++ Функции, обрабатывающие объект класса Место ошибки подписано в коде (строка 203) Это программа, работающая с "банкоматом": нужно реализовать 3 варианта класса и соответствующих методов/функций снятия/добавления купюр и редактирования банкомата Ошибка возникает при обработки первой структуры "Сбербанк" в качестве "пользователя": функции правильно снимают/кладут деньги, но при возвращении обратно в цикл while(true) в main все... подробнее

Показать сообщение отдельно
gromo
 Аватар для gromo
366 / 265 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
28.12.2013, 01:15     Функция fread не считывает данные
Цитата Сообщение от freemanc Посмотреть сообщение
Появилась необходимость считать содержимое файла в массив одним махом (то есть без использования цикла).
Насколько я знаю, одним махом и переносимо не получится, но для POSIX-совместимых OS есть панацеи это точно.
Ввод-вывод основан на системных вызовах read и write, к которым программа на Си обращается с помощью функций с именами read() и write().
Для обеих первым аргументом является дескриптор файла. Во втором аргументе указывается массив символов вашей программы, куда посылаются или откуда берутся данные. Третий аргумент — это количество пересылаемых байтов.

Обе функции возвращают число переданных байтов. При чтении количество прочитанных байтов может оказаться меньше числа, указанного в третьем аргументе. Нуль означает конец файла, а –1 сигнализирует о какой-то ошибке. При записи функция возвращает количество записанных байтов, и если это число не совпадает с требуемым, следует считать, что запись не произошла.

Например, чтобы без буферизации "одним махом" перенаправить стандартный ввод на вывод:
C
1
2
3
4
5
6
7
8
9
10
#define BUFSIZ 4096
int main()
{
      char buf[BUFSIZ];
      int n;
 
      while ((n = read(0, buf, BUFSIZ)) > 0)
          write(i, buf, n);
      return 0;
}
Вот, например, как упрощенно устроена функция getchar() из стандартной библиотеки:
C
1
2
3
4
5
6
7
/* getchar: небуферизованный ввод одного символа */
  int getchar(void)
  {
      char c;
 
      return (read(0, &c, 1) == 1) ? (unsigned char) c : EOF;
  }
А вот и буферизованный вариант для общего развития:
C
1
2
3
4
5
6
7
8
9
10
11
12
int getchar(void)
  {
      static char buf[BUFSIZ];
      static char *bufp = buf;
      static int n = 0;
 
      if (n == 0) {   /* буфер пуст */
          n = read(0, buf, sizeof(buf));
          bufp = buf;
      }
      return (--n >= 0) ? (unsigned char) *bufp++ : EOF;
  }
Если интересно, то курите man 2 read или man 2 write, а лучше
Источник: гл.8 "Язык программирования Си" Д.Ритчи, Б.Керниган
 
Текущее время: 03:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru