Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Файл заполняется не до конца 
V
    Опции темы
Alexey91
  Дата 25.3.2010, 20:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 195
Регистрация: 18.9.2008

Репутация: нет
Всего: нет



Файл заполняется только одним значением. Прочитал, что fwrite при ошибке возвращает наименьшее из введенных значений, но где неправильно я так понять не могу, уже несколько часов  smile

Код

#include <stdio.h>
#include <string.h>

struct tov {char name[10]; float c; int kol;} t1;

main()
{

char ch;
  FILE *tf;
  tf=fopen("file20.txt","a"); 



  printf("\n  Ввод товаров \n");

    printf("\n название: "); scanf("%s",&t1.name);

    printf(" цена: "); scanf("%f",&t1.c);

    printf(" количество: "); scanf("%d",&t1.kol);

    fwrite(&t1,sizeof(t1),1,tf);




  fclose(tf);



return 0;
}
 
 


PM   Вверх
ИванМ
Дата 25.3.2010, 20:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1260
Регистрация: 19.6.2006
Где: СПб

Репутация: 3
Всего: 23



Замени scanf("%s",&t1.name); на scanf("%s",t1.name);
PM MAIL   Вверх
Peter
Дата 25.3.2010, 20:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 771
Регистрация: 28.7.2003
Где: Ставрополь

Репутация: нет
Всего: 1



А как нужно? Чтобы запись добавлялась в файл?
Во-первых, в самой программе нет цикла. Так что она, как я вижу, добавит одну запись в файл и завершит работу.
Еще мне не нравится такое:
Код
scanf("%s",&t1.name);
Может быть, я ошибаюсь (проверять не хочу), но в этом случае амперсанд ставить не надо, так как t1.name и так является указателем.
Дальше. Файл надо открывать в бинарном режиме:
Код
tf=fopen("file20.txt","ab");
так как дамп float, вообще говоря, в текстовом представлении... некорректен, что ли.


--------------------
всё, что делаете, делайте от души, как для Господа (Послание апостола Павла колоссянам, 3:23).
PM MAIL WWW   Вверх
Alexey91
  Дата 4.4.2010, 07:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 195
Регистрация: 18.9.2008

Репутация: нет
Всего: нет



Да! Работает
Только я не могу понять, почему t.name и так является указателем.. Наподобие имя массива является адресом начала массива?
PM   Вверх
ИванМ
Дата 4.4.2010, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1260
Регистрация: 19.6.2006
Где: СПб

Репутация: 3
Всего: 23



Цитата(Alexey91 @  4.4.2010,  07:05 Найти цитируемый пост)
имя массива является адресом начала массива?

да
PM MAIL   Вверх
Peter
Дата 4.4.2010, 18:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 771
Регистрация: 28.7.2003
Где: Ставрополь

Репутация: нет
Всего: 1



t.name и &t.name[0] - одно и то же.


--------------------
всё, что делаете, делайте от души, как для Господа (Послание апостола Павла колоссянам, 3:23).
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0428 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.