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

scanf для чтения структуры - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Вычитание одной даты из другой http://www.cyberforum.ru/cpp-beginners/thread305918.html
Доброго времени суток! Я столкнулся с одной небольшой проблемкой...мне необходимо написать программку, которая,с учетов високосных дней, во-первых, вычитает из даты определенное количество дней, а во-вторых, определяет количество дней между двумя заданными датами. Сам класс я уже написал, а вот как реализовать это дело я не совсем понял...Вот мое творчество...Заранее спасибо. //data.h #include...
C++ Основы класов Ув. форумчане, требуется ваша помошь!! была прога, которая демонстрировала работу функции дружественных классов, - multi(Base); добавил конструкторы-деструктор,констркуктор копирования и вдруг перестало выводить сумму а+б+с+д в фции multi(Base) #include "stdafx.h" #include <iostream> #include <math.h> #include <conio.h> #include <Windows.h> using namespace std; class Friend; class... http://www.cyberforum.ru/cpp-beginners/thread305913.html
C++ как сделать так чтобы была возможность записывать и фамилию и имя,а то у меня только до пробела читает?
здраствуйте!скажите пож-та как сделать так чтобы была возможность записывать и фамилию и имя,а то у меня только до пробела читает? #include <iostream.h> #include <stdio.h> #include <conio.h> #define SIZE 10 struct student {char name;
дан массив a={a[1],a[2],...,a[n]} сформировать из него матрицу 10х10 C++
дан массив a={a,a,...,a} сформировать из него матрицу 10х10 a a... a a a a... a a .............................. .............................. a a...a a a a...a a
C++ Запись в файл http://www.cyberforum.ru/cpp-beginners/thread305904.html
Доброго времени суток! Хочу вывести чаровские массивы один в файл где s, будет на одной строке, а под ней, соответственно на другой строке. В данном положении frite ставит одну строку за другой. Подскажите как переместить курсор на нижнюю строку и записать. Спасибо. FILE *file; char s= "-------------------------------------------------"; char t= "| Date | Executive | My...
C++ перемена элементов Как можно Переставить все строки и элементы k-того столбца? подробнее

Показать сообщение отдельно
gimnazistka
Сообщений: n/a
27.05.2011, 01:24     scanf для чтения структуры
Возникли вот какие вопросы, прошу вас ткнуть носом, ув. форумчане... Есть структура вида
Bash
1
2
3
NETBOOK  AMD  ATI  500  WINDOWS  325
NOUTBOOK INTEL  NVIDIA  750  LINUX  250
PC  AMD  NVIDIA  320  WINDOWS  325
Ума не приложу, как считать данную структуру через scanf. Вот какие наработки пока есть
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
#include "stdafx.h"
#include <iostream>
#include <stdlib.h>
#include <fstream>
#include <ctime>
#include <iomanip>
#include "stdio.h"
#include "windows.h"
 
using namespace std;
 
int kolvozapis;
 
void sozd();
void vvod();
void pokaz();
void poisk();
void udalenie();
 
struct computer
{
    char TIP [10]; int COST,HDD; char CPU [10]; char VGA [10]; char OS [10];
 
} comp [50];
 
void main()
{
        setlocale (0,"");
 
char a;
 
        while( 1 )
        {
                cout << "\tГЛАВНОЕ МЕНЮ\n";
                cout << "1-Создать файл\n\r2-Добавить запись в файл\n\r3-Показать записи\n\r4-Поиск\n\r5-Удаление\n\r6-Выход\n";
 
                cin >> a;
 
                switch( a )
                {
                        case '1':
                                sozd();
                                break;
                        case '2':
                                vvod();
                                break;
                         case '3':
                                pokaz();
                                break;
                        //case '4':
                        //        /*poisk();
                        //        break;
                        //case '5':
                        //        udalenie();
                        //        break;*/
                        case '6':
                                exit(1);
                }
        }
}
 
void sozd ()
{
        cout << "Создан файл - out.txt";
        cout << "\n\Введите количество записей, которые будут помещены в файл ";
        cin >> kolvozapis;
 
        FILE *my;
        my = fopen( "out.txt", "w+" );
        for( int i = 0; i < kolvozapis; i++ )
        {
                cout << "\n Введите тип ПК (PC/NETBOOK/NOUTBOOK) ";
                cin >> comp[i].TIP;
                cout << "\n Введите производителя процессора (INTEL/AMD) ";
                cin >> comp[i].CPU;
                cout << "\n Введите производителя видео (ATI/NVIDIA) ";
                cin >> comp[i].VGA;
                cout << "\n Введите объем жесткого диска  ";
                cin >> comp[i].HDD;
                cout << "\n Введите тип операционной системы (WINDOWS/LINUX) ";
                cin >> comp[i].OS;
                cout << "\n Введите желаемую стоимость ";
                cin >> comp[i].COST;
                fprintf(my,"%s %s %s %d %s %d\n",comp[i].TIP,comp[i].CPU,comp[i].VGA,
                             comp[i].HDD,comp[i].OS,comp[i].COST);
                system ("cls");
        };
        fclose( my );
}
 
void vvod()
{
int n, i;
        cout << "\n\Введите количество добавляемых записей ";
        cin >> n;
        FILE *my;
        my = fopen( "out.txt", "a+" );
        for( i = 0; i < n; i++ )
        {
                cout << "\n Введите тип ПК (PC/NETBOOK/NOUTBOOK) ";
                cin >> comp[i].TIP;
                cout << "\n Введите производителя процессора (INTEL/AMD) ";
                cin >> comp[i].CPU;
                cout << "\n Введите производителя видео (ATI/NVIDIA) ";
                cin >> comp[i].VGA;
                cout << "\n Введите объем жесткого диска  ";
                cin >> comp[i].HDD;
                cout << "\n Введите тип операционной системы (WINDOWS/LINUX) ";
                cin >> comp[i].OS;
                cout << "\n Введите желаемую стоимость ";
                cin >> comp[i].COST;
                fprintf(my,"%s %s %s %d %s %d\n",comp[i].TIP,comp[i].CPU,comp[i].VGA,
                             comp[i].HDD,comp[i].OS,comp[i].COST);
                system("cls");
        };
        fclose( my );
}
 
void pokaz ()
{
    cout << "Выбран режим чтения данных из файла";
    FILE *my;
        my = fopen( "out.txt", "r+" );
        for( int i = 0; i < 2; i++ )
        {
            fscanf(my,"%s %s %s %d %s %d",&comp[i].TIP,&comp[i].CPU);
            cout<<comp[i].TIP<<comp[i].CPU;} // например так начать читать?
}
В цикле пробовать считывать данные, но как узнать наперед, сколько там может быть полей?
И попутно вопрос, стоит ли в файл вносить записи вида - тип ПК, тип ЦПУ и т.п...
Или просто в нем хранить данные, а выводить уже в консоль таким образом
C++
1
cout<<"Тип ПК"<<comp.TIP
Не приходилось просто до сих пор работать с структурами, а большинство примеров не робит в VS 2010...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 15:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru