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

условие: с файла по-байтно считываются символы (while (от первого до последнего символа)) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Длинная арифметика http://www.cyberforum.ru/cpp-beginners/thread266816.html
Как сделать типы длинных чисел, например, знаковое 256-ти битное целое и 256-ти битное вещественное с 224-х битной мантиссой и 32-х битным порядком? Добавлено через 1 минуту Надо поддерживать всю...
C++ натуральные числа Вывести на печать все натуральные числа, меньшие заданного N, сумма квадратов цифр которых кратна 7. Определите 3 цифры номера автомобиля, если известно, что получившееся число кратно 2, 5 и 7, а... http://www.cyberforum.ru/cpp-beginners/thread266793.html
C++ Что я неправильно сделал?
#include <stdio.h> #include <math.h> int main(void) { long n; /* параметр ряда */ double dbln; /* параметр ряда в форме с плавающей точкой */ double sum=0; /*...
C++ Реализация класса
Спроектировать и реализовать класс BigInt, позволяющий хранить целые числа в диапазоне , и производить набор основных операций с ними. В классе должны быть определены различные конструкторы (по...
C++ Ошибка при использовании оператора delete в Visual Studio 2010 http://www.cyberforum.ru/cpp-beginners/thread266778.html
Изучаю указатели в C++. Есть следующий код: #include <iostream> #include <locale> using namespace std; int main() { setlocale(LC_CTYPE, "Russian"); char **month = new char* ;
C++ Спроектировать и реализовать класс BigInt Нужно спроектировать и реализовать класс BigInt, позволяющий хранить целые числа в диапазоне , и производить набор основных операций с ними. В классе должны быть определены различные конструкторы... подробнее

Показать сообщение отдельно
fasked
Эксперт С++
4942 / 2522 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
30.03.2011, 13:44
Функция fread работает с указателями, чтобы передать указатель на массив не надо ставить знак амперсанда перед именем переменной. Обратите внимание на 19 строку. Правильнее будет написать следующим образом:
C
1
while (fread(a, 1, 5, fp))
Далее Вы пытаетесь вывести, прочитанные с помощью fread 5 байтов на консоль, используя printf. Так делать нельзя, по скольку данный символьный массив не содержит нуль-терминатора, либо делайте массив размером 6 символов, и последний не используйте, либо выводите содержимое посимвольно в цикле.
Завершение цикла чтения файла не обязательно означает то, что файл прочитан до конца, после цикла советую поставить проверочные условия с использованием feof и ferror
Цитата Сообщение от politex Посмотреть сообщение
а если символов меньше 5. оно допишет 0?
Нет, обнулить массив вы должны заранее, например, с помощью функции memset, либо опять же в цикле поэлементно.
Важно помнить, что такие функции, как fread и memset работают именно с байтами, а не со строками. И размер обрабатываемого участка памяти они принимают в байтах, а не в количестве элементов.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru