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

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

Войти
Регистрация
Восстановить пароль
 
sitesv
24 / 22 / 2
Регистрация: 22.04.2010
Сообщений: 655
#1

fwrite, возвращает ноль, хотя... - C++

27.05.2010, 11:31. Просмотров 832. Ответов 8
Метки нет (Все метки)

Код
    FILE *h;    
    if ((h = fopen("1.p", "w")) == NULL) {printf("Can't create 1.p.\n");exit(1);}
    char buff[1045];    
    k+=size;
    //копирование области данных
    rcv_size=fwrite(&buff[21],1,size,h);
    if (rcv_size==0)
    {
          kk++; //попадаем периодически сюда, НО!! size>0!!!
    }
Из массива buff, размер которого 1045 байт, я вытаскиваю кусок размером 1024 байт, т.е. в из &buff[21].
Нооо! временами попадаю в if, т.е. число записанных данных равно 0, хотя size>0. В чем же глюк такой?....
Пишу под Linux.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.05.2010, 11:31     fwrite, возвращает ноль, хотя...
Посмотрите здесь:

Ошибка деления на ноль, хотя это должно обойти C++
При нахождении количества локальных максимумов в последовательности for_each возвращает ноль C++
C++ Ввести данные структуры, и если на входе пустая строка, функция возвращает "ноль" (Прокомментировать каждую строку)
C++ fwrite
Ф-ия month всегда возвращает true, хотя так не должно быть C++
Сформировать массив К из номеров столбцов матрицы, в которых есть хотя бы один ноль C++
GetPrivateProfileInt всегда возвращает ноль C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kazak
 Аватар для kazak
3030 / 2351 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
27.05.2010, 11:46     fwrite, возвращает ноль, хотя... #2
Вообще fwrite(&buff[21],1,size,h); означает записать в файл символ находящийся в b[21] size-раз.
sitesv
24 / 22 / 2
Регистрация: 22.04.2010
Сообщений: 655
27.05.2010, 13:16  [ТС]     fwrite, возвращает ноль, хотя... #3
Цитата Сообщение от kazak Посмотреть сообщение
Вообще fwrite(&buff[21],1,size,h); означает записать в файл символ находящийся в b[21] size-раз.
нет, я неправильно вопрос описал, там на самом деле не массив, а указатель на массив. а по поводу size раз - не правда, в программной среде CodeWarrrior на месте size как раз значится объем передаваемых данных...
kazak
 Аватар для kazak
3030 / 2351 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
27.05.2010, 13:35     fwrite, возвращает ноль, хотя... #4
Если используется массив указателей, тогда указатель передавать надо без операции взятия адреса &.
sitesv
24 / 22 / 2
Регистрация: 22.04.2010
Сообщений: 655
27.05.2010, 13:48  [ТС]     fwrite, возвращает ноль, хотя... #5
грубо говоря сделано так:
char a[1045];
char *b=a;
fwrite(&b[21],1,size,h);

вроде проверял что на вход fwrite приходит, все сходится.
только блин, временами fwrite 0 возвращает...
kazak
 Аватар для kazak
3030 / 2351 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
27.05.2010, 14:05     fwrite, возвращает ноль, хотя... #6
Цитата Сообщение от sitesv Посмотреть сообщение
временами fwrite 0 возвращает...
это происходит случайным образом, или всегда на определенных наборах данных?
odip
Эксперт С++
 Аватар для odip
7151 / 3291 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
27.05.2010, 15:02     fwrite, возвращает ноль, хотя... #7
Полный рабочий кусок кода в виде отдельной программы
Иначе разговор пустой
И чтобы сказать правильный код или нет - нужно знать что код именно должен делать ?
easybudda
Эксперт С++
 Аватар для easybudda
9412 / 5435 / 917
Регистрация: 25.07.2009
Сообщений: 10,428
27.05.2010, 15:13     fwrite, возвращает ноль, хотя... #8
Цитата Сообщение от kazak Посмотреть сообщение
Вообще fwrite(&buff[21],1,size,h); означает записать в файл символ находящийся в b[21] size-раз.
Не-а! Это значит записать в файл h size элементов по 1 байту каждый начиная с buf[21]. В любом случае явно не то, что задумано...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.05.2010, 23:31     fwrite, возвращает ноль, хотя...
Еще ссылки по теме:

C++ RegOpenKeyEx возвращает 2 хотя ключ в реестре точно существует
почему после нажатия на ноль мне приходится два раза жать на Enter чтобы выйти из программы ,хотя я в while ук C++
C++ В прямоугольной матрице определить сумму элементов в строках, содержащих хотя бы один ноль
Посчитать количество столбцов матрицы в которых есть хотя бы один ноль C++
C++ Считать матрицу из файла, найти количество строк, содержащих хотя бы один ноль (файловый ввод/вывод)

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

Или воспользуйтесь поиском по форуму:
sitesv
24 / 22 / 2
Регистрация: 22.04.2010
Сообщений: 655
27.05.2010, 23:31  [ТС]     fwrite, возвращает ноль, хотя... #9
Мужики, спасибо за думку! В итоге оказалось , что чип, на который производится запись, по неизвестным причинам не позволяет записать более 2.2 мб, из-за этого и возвращался ноль... Спасибо все же! )
Yandex
Объявления
27.05.2010, 23:31     fwrite, возвращает ноль, хотя...
Ответ Создать тему
Опции темы

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