Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
ozzy_b
2 / 2 / 1
Регистрация: 02.10.2012
Сообщений: 169
1

Криво пишет даные в файл

04.12.2012, 23:11. Просмотров 476. Ответов 11
Метки нет (Все метки)

Надо через структуры записать даные в файл. Компилюю, ввожу даные, записивает, открываю то что записал а там какието "иероглифы". В чем проблема? Как мне потом етот файл использовать, например для чтения в том же компиляторе? ВВожу токо английские буквы.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include <iostream>
#include <stdio.h>
#include <math.h>
#include <conio.h>
using namespace std;
const int m=3;
struct good
{
    char name[10];
    char type_count[10];
    char sort[10];
    int count;
    int price;
};
void inp(good []);
void write(good []);
 
int main()
{
    good goods[m];
    inp(goods);
    
    getch();
}
void inp(good goods[m])
{
     cout<<"\n************************\n\tInput\n************************"<<endl;
     
        for(int i=0; i<m; i++)
        {
            cout<<"Input name: "<<i+1<<" ";
            cin>>goods[i].name;
            cout<<"Input type count: "<<i+1<<" ";
            cin>>goods[i].type_count;
            cout<<"Input sort: "<<i+1<<" ";
            cin>>goods[i].sort;
            cout<<"Input count: "<<i+1<<" ";
            cin>>goods[i].count;
            cout<<"Input price: "<<i+1<<" ";
            cin>>goods[i].price;
        }
        cout<<endl;
        write(goods);
}
void write(good goods [m])
{
    FILE *f;
    f=fopen("D:\\Food.txt", "w");
    for(int i=0; i<m; i++)
    {
        fprintf (f, "%c", goods[i].name);
        fprintf (f, "%c", goods[i].type_count);
        fprintf (f, "%c", goods[i].sort);
        fprintf (f, "%d", goods[i].count);
        fprintf (f, "%d", goods[i].price);
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.12.2012, 23:11
Ответы с готовыми решениями:

Криво выводит результаты программы в файл
Приветствую=) Собственно говоря весь вопрос в заголовке. Дело в том что на...

Почему не пишет файл?
int main (int Count , char **Parametrs) { std::ofstream s;...

WriteFileEx - не пишет в файл.
Нужен асинхронный ввод/вывод. Простой пример: char*...

Пишет в файл калябаляку
void pars(int *start, int *end) { FILE *f; f = fopen(&quot;file.txt&quot;,...

Fprintf пишет в файл с ошибками
Здравствуйте. Имеется программа общения с устройством по COM порту. Так же есть...

11
BoBaH26
30 / 30 / 5
Регистрация: 02.12.2010
Сообщений: 255
04.12.2012, 23:30 2
Точно не уверен, но может быть, потому, что ты при каждом проходе цикла (для кол-ва записей) пробуешь занести в файл символьный массив, чего делать нельзя, ввод и вывод массивов происходит в цикле, т.е нужно для вывода организовать еще 3 цикла для .name, .type_count, .sort. А .count и .price он у тебя правильно выводит? ПО крайней мере должен правильно выводить.
1
ozzy_b
2 / 2 / 1
Регистрация: 02.10.2012
Сообщений: 169
04.12.2012, 23:32  [ТС] 3
BoBaH26, немного понял суть, но что конкретно сделать не знаю
0
Wolkodav
609 / 462 / 58
Регистрация: 18.09.2012
Сообщений: 1,688
04.12.2012, 23:35 4
Создай функцию, которая принимает на вход структуру и файла (палюбе только файл иначе там могут возникнуть проблемы). Она пускай и выводит в файл твою структуру. Но только один объект структуры. Выводит можно функцией fputs(f,str), f-файл, str-выводимая строка. Можно и fprintf, если что то она может выводить const* char( т.е. массивы чаровские).
1
ozzy_b
2 / 2 / 1
Регистрация: 02.10.2012
Сообщений: 169
04.12.2012, 23:37  [ТС] 5
Wolkodav, блин, я не понимаю как ето сделать, уже ночь у меня, а мне завтра сдавать ету чертову лабараторку((
0
Wolkodav
609 / 462 / 58
Регистрация: 18.09.2012
Сообщений: 1,688
04.12.2012, 23:44 6
10 мин жди. Щя помогу
1
ozzy_b
2 / 2 / 1
Регистрация: 02.10.2012
Сообщений: 169
04.12.2012, 23:44  [ТС] 7
Wolkodav, спасибо)
0
BoBaH26
30 / 30 / 5
Регистрация: 02.12.2010
Сообщений: 255
04.12.2012, 23:47 8
C++
1
2
3
4
5
6
7
8
9
10
11
for(int i=0; i<m; i++)
    {
        for (int k=0;i<strlen(goods[i].name);k++)
             fprintf (f, "%c", goods[i].name[k]);
        for (int k=0;i<strlen(goods[i].type_count);k++)
             fprintf (f, "%c", goods[i].type_count[k]);
        for (int k=0;i<strlen(goods[i].sort);k++)
             fprintf (f, "%c", goods[i].sort[k]);
        fprintf (f, "%d", goods[i].count);
        fprintf (f, "%d", goods[i].price);
    }
Вот измени так цикл вывода. Попробуй, но точно не гарантирую, не набирал, просто как-то таким образом сам делал.
1
ozzy_b
2 / 2 / 1
Регистрация: 02.10.2012
Сообщений: 169
04.12.2012, 23:53  [ТС] 9
BoBaH26, ошибка
Криво пишет даные в файл
0
BoBaH26
30 / 30 / 5
Регистрация: 02.12.2010
Сообщений: 255
05.12.2012, 00:05 10
ВСЕ! Я не увидел ошибку сразу. Возвращай свой старый вариант, но вместо %c при выводе указывай %s. Т.е.
C++
1
2
3
4
5
6
7
8
for(int i=0; i<m; i++)
    {
        fprintf (f, "%s", goods[i].name);
        fprintf (f, "%s", goods[i].type_count);
        fprintf (f, "%s", goods[i].sort);
        fprintf (f, "%d", goods[i].count);
        fprintf (f, "%d", goods[i].price);
    }
И, пожалуйста, поставь табуляцию, читать невозможно))

Добавлено через 22 секунды
У тебя строка, а не символ))
1
ozzy_b
2 / 2 / 1
Регистрация: 02.10.2012
Сообщений: 169
05.12.2012, 00:15  [ТС] 11
BoBaH26, о, спасибо большое, теперь записало, хоть все в кучу, но ето надо табуляцию поправить. А если мне надо будет взять даные из файла то оно прочитает все верно, ну всмысле с++ увидит где такойто елемент структуры, или для него етот файл просто текстовый документ?
0
BoBaH26
30 / 30 / 5
Регистрация: 02.12.2010
Сообщений: 255
05.12.2012, 00:38 12
Увы, нет. Если хочешь, чтобы он читал информацию и структурировал ее, размещай данные отдельно, иначе это просто предложение. Просто выводи данные с переводом каретки на новую строку. А потом считывай в нужном порядке
0
05.12.2012, 00:38
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.12.2012, 00:38

файлы с++ квадраты считает а в файл не пишет
Вычислить сумму квадратов чисел от 1 до 30. Квадраты чисел предварительно...

Fwprintf не пишет данные wchar_t в файл
привет Что-то непонятно поведение. Функция run_command_with_response()...

В файл пишет только первые два символа!
Всем доброго времени суток. Собственно задача:Провести транс-литерацию...


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

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

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