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

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

Войти
Регистрация
Восстановить пароль
 
zydrate
0 / 0 / 0
Регистрация: 04.12.2010
Сообщений: 11
#1

Программа на структуры - C++

12.12.2010, 16:30. Просмотров 372. Ответов 6
Метки нет (Все метки)

Написать программу обработки файла типа запись, содержащую следующие пункты меню:
- Создание,
- Просмотр,
- Коррекция – добавление новых данных или исправление старых.

Для моего варианта данные следующие:
Информация об участниках соревнований содержит:
- Ф.И.О. игрока;
- игровой номер;
- возраст;
- рост;
- вес.

Программу написал но есть загвоздка. В файл выводится какая-то не та кодировка. Номер, возраст, рост и вес выводятся не целыми числами, а разными символами. Причем если данные вводить в формате %s а не %d, то все работает. Но мне нужно ввести именно целые числа а не строку символов, т к далее буду с ними работать. Подскажите , как это сделать?

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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
  struct Sved {
        char Fam[14];
        int GameNumber, Age, Height, Weight;
        } zap;
  char Spis[]="f:\\University\\Sp.dat";
  FILE *F_zap;
int main ()
{ int i,kodR,size=sizeof(Sved);
  float s;
  while(1)   {
    puts("  Creating    -   1");
    puts("  Viewing -   2");
    puts("  Adding  -   3");
    puts("  Exit            -   0");
      scanf("%d", &kodR);
    switch(kodR)   {
     case 1:
     case 3: if(kodR==1) F_zap=fopen(Spis,"w+b");
            else F_zap=fopen(Spis,"a+b");
      while(2) {
        puts("Vvedite: Family (Zaver6enie vvoda - 0)");
         scanf("%s", zap.Fam);
         if((zap.Fam[0])=='0') break;
         puts("Vvedite: GameNumber, Age, Height, Weight");
         scanf("%d %d %d %d", &zap.GameNumber, &zap.Age, &zap.Height, &zap.Weight);
         // Вот здесь в предыдущей строке если данные вводить как строка символов,
         // а не десятичное целое (%s вместото %d), то выводит все как надо.
         // Но мне нужны именно числовые данные, т.к в дальнейшем буду далее с ними
         // оперировать 
         fwrite(&zap.Fam, size, 1, F_zap);
          
        }
       fclose(F_zap);
     break;
     case 2:   F_zap=fopen(Spis,"r+b"); 
        while(2)
        {
 if(!fread(&zap, size, 1, F_zap)) break;    
     printf(" %20s %2d %2d %2d %2d\n",  
   zap.Fam,zap.GameNumber,zap.Age,zap.Height,zap.Weight);
             }
        fclose(F_zap);
     break;
     case 0:   return 0;    
 
}       //Switch  
     }  //While(1)  
}
.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mencey
147 / 94 / 7
Регистрация: 22.07.2010
Сообщений: 424
12.12.2010, 18:53     Программа на структуры #2
Если файл будет нужен для просмотра, то
сохраняйте всё как строки, а потом опять можете всё считать и перевести строки в число.
В противном случае
сохраняйте числом.
zydrate
0 / 0 / 0
Регистрация: 04.12.2010
Сообщений: 11
12.12.2010, 19:21  [ТС]     Программа на структуры #3
Цитата Сообщение от Mencey Посмотреть сообщение
Если файл будет нужен для просмотра, то
сохраняйте всё как строки, а потом опять можете всё считать и перевести строки в число.
В противном случае
сохраняйте числом.
Так в том то и дело, что если сохранить в файл числом, то сбивается кодировка и получаются почему-то их ASCII коды, а не сами числа. Вот это мне надо исправить.
Mencey
147 / 94 / 7
Регистрация: 22.07.2010
Сообщений: 424
12.12.2010, 21:36     Программа на структуры #4
Цитата Сообщение от zydrate Посмотреть сообщение
если сохранить в файл числом, то сбивается кодировка
Т.е. вы хотите чтобы в файле число было как строка(т.е. в файле было например "675")?
zydrate
0 / 0 / 0
Регистрация: 04.12.2010
Сообщений: 11
13.12.2010, 00:15  [ТС]     Программа на структуры #5
Да, в файле должно быть записано число.
К примеру строка такая: Здесь_Любая_фамилия 5 27 68 175
Я мог бы вывести это как строку а не числа. Но мне потом надо будет сортировать эту базу и снова выводить в файл. Вывести информацию о самой молодом, рослом и легком участнике соревнований. А я так понимаю, это можно будет сделать только с числовыми данными. Или я не прав?

Добавлено через 1 час 56 минут
Mencey
147 / 94 / 7
Регистрация: 22.07.2010
Сообщений: 424
14.12.2010, 19:59     Программа на структуры #6
Строки можно и в числа перевести.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.12.2010, 18:54     Программа на структуры
Еще ссылки по теме:

программа развлетленной структуры C++
C++ Структуры. Файловый ввод вывод. Почему не работает программа ?
C++ Программа должна определять корректность вводимой структуры
C++ простая программа на структуры с++
C++ Вылетает программа (Структуры и функции)

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

Или воспользуйтесь поиском по форуму:
zydrate
0 / 0 / 0
Регистрация: 04.12.2010
Сообщений: 11
18.12.2010, 18:54  [ТС]     Программа на структуры #7
Цитата Сообщение от Mencey Посмотреть сообщение
Строки можно и в числа перевести.
Спасибо, с переводом уже разобрался.
Yandex
Объявления
18.12.2010, 18:54     Программа на структуры
Ответ Создать тему
Опции темы

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