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

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

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

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

27.05.2010, 11:31. Просмотров 895. Ответов 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.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.05.2010, 11:31
Здравствуйте! Я подобрал для вас темы с ответами на вопрос fwrite, возвращает ноль, хотя... (C++):

GetPrivateProfileInt всегда возвращает ноль - C++
Хотел считывать значение из INI-файла, но столкнулся с такой проблемой: #include <Windows.h> #include <iostream> #include...

При нахождении количества локальных максимумов в последовательности for_each возвращает ноль - C++
Задание: Найти количество локальных максимумов в последовательности с помощью for_each. #include <iostream> #include <algorithm> ...

Ошибка деления на ноль, хотя это должно обойти - C++
Добрый день! Пытаюсь сравнить модуль числа с квадратом другого - не получается: if (abs(y)>(x*x)) z=cos(M_PI*x/4); else z=1+1/x; ...

Посчитать количество столбцов матрицы в которых есть хотя бы один ноль - C++
б) посчитать количество столбцов, в которых есть хотя бы один ноль.

Сформировать массив К из номеров столбцов матрицы, в которых есть хотя бы один ноль - C++
Заданна матрица вещественных чисел P (n x m). Сформировать массив К из номеров столбцов матрицы, в которых есть хотя бы один ноль. Найти...

Сформировать массив из номеров столбцов матрицы, в которых есть хотя бы один ноль - C++
8.Задана матрица вещественных чисел . Сформировать массив из номеров столбцов матрицы, в которых есть хотя бы один ноль. help

8
kazak
3051 / 2372 / 160
Регистрация: 11.03.2009
Сообщений: 5,437
Завершенные тесты: 1
27.05.2010, 11:46 #2
Вообще fwrite(&buff[21],1,size,h); означает записать в файл символ находящийся в b[21] size-раз.
0
sitesv
24 / 22 / 2
Регистрация: 22.04.2010
Сообщений: 664
27.05.2010, 13:16  [ТС] #3
Цитата Сообщение от kazak Посмотреть сообщение
Вообще fwrite(&buff[21],1,size,h); означает записать в файл символ находящийся в b[21] size-раз.
нет, я неправильно вопрос описал, там на самом деле не массив, а указатель на массив. а по поводу size раз - не правда, в программной среде CodeWarrrior на месте size как раз значится объем передаваемых данных...
0
kazak
3051 / 2372 / 160
Регистрация: 11.03.2009
Сообщений: 5,437
Завершенные тесты: 1
27.05.2010, 13:35 #4
Если используется массив указателей, тогда указатель передавать надо без операции взятия адреса &.
0
sitesv
24 / 22 / 2
Регистрация: 22.04.2010
Сообщений: 664
27.05.2010, 13:48  [ТС] #5
грубо говоря сделано так:
char a[1045];
char *b=a;
fwrite(&b[21],1,size,h);

вроде проверял что на вход fwrite приходит, все сходится.
только блин, временами fwrite 0 возвращает...
0
kazak
3051 / 2372 / 160
Регистрация: 11.03.2009
Сообщений: 5,437
Завершенные тесты: 1
27.05.2010, 14:05 #6
Цитата Сообщение от sitesv Посмотреть сообщение
временами fwrite 0 возвращает...
это происходит случайным образом, или всегда на определенных наборах данных?
0
odip
Эксперт С++
7160 / 3222 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
27.05.2010, 15:02 #7
Полный рабочий кусок кода в виде отдельной программы
Иначе разговор пустой
И чтобы сказать правильный код или нет - нужно знать что код именно должен делать ?
0
easybudda
Модератор
Эксперт CЭксперт С++
9717 / 5668 / 971
Регистрация: 25.07.2009
Сообщений: 10,911
27.05.2010, 15:13 #8
Цитата Сообщение от kazak Посмотреть сообщение
Вообще fwrite(&buff[21],1,size,h); означает записать в файл символ находящийся в b[21] size-раз.
Не-а! Это значит записать в файл h size элементов по 1 байту каждый начиная с buf[21]. В любом случае явно не то, что задумано...
1
sitesv
24 / 22 / 2
Регистрация: 22.04.2010
Сообщений: 664
27.05.2010, 23:31  [ТС] #9
Мужики, спасибо за думку! В итоге оказалось , что чип, на который производится запись, по неизвестным причинам не позволяет записать более 2.2 мб, из-за этого и возвращался ноль... Спасибо все же! )
0
27.05.2010, 23:31
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.05.2010, 23:31
Привет! Вот еще темы с ответами:

В прямоугольной матрице определить сумму элементов в строках, содержащих хотя бы один ноль - C++
в прямоугольной матрице определить сумму элементов в строках, содержащих хотя бы один ноль c++ #include "stdafx.h" #include <iostream> ...

Считать матрицу из файла, найти количество строк, содержащих хотя бы один ноль (файловый ввод/вывод) - C++
Собственно код прозрачный , но не работает. Должен открыть фаил с матрицей, где записаны 16 чисел квадратом 4 на 4. Считать их в массив...

RegOpenKeyEx возвращает 2 хотя ключ в реестре точно существует - C++
RegOpenKeyEx возвращает 2 хотя ключ в реестре точно существует и в regedit я его вижу перепробывал уже тучу параметров подскажите что не...

почему после нажатия на ноль мне приходится два раза жать на Enter чтобы выйти из программы ,хотя я в while ук - C++
почему после нажатия на ноль мне приходится два раза жать на Enter чтобы выйти из программы ,хотя я в while указал что цикл действует пока...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

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