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

Считывание и запись в файл. - C++

Восстановить пароль Регистрация
 
McQueen
Сообщений: n/a
18.05.2011, 22:50     Считывание и запись в файл. #1
Написал код только под консоль, а вот не могу "прикрутить" считывание с файла и запись в новый.

вот исходный код:

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
#include <stdio.h>
#include <string.h>
#include <windows.h>
char buf[256];
char *rus(const char *s) {CharToOem(s,buf); return buf;}
 
 
void translate_triad (char triad[4])
{
    const char *hundreds[] = {
        "сто", "двести", "триста", "четыреста", "пятьсот",
        "шестьсот", "семьсот", "восемьсот", "девятьсот"
    };
    const char *tens[] = {
        "десять", "двадцать", "тридцать", "сорок", "пятьдесят",
        "шестьдесят", "семьдесят", "восемьдесят", "девяносто"
    };
    const char *ones[] = {
        "один", "два", "три", "четыре", "пять", "шесть",
        "семь", "восемь", "девять", "десять", "одиннадцать",
        "двенадцать", "тринадцать", "четырнадцать",
        "пятнадцать", "шестнадцать", "семнадцать",
        "восемнадцать", "девятнадцать"
    };
    if (triad[0] != '0')
        printf ("%s ", rus(hundreds[triad[0] - '0' - 1]));
    if (triad[1] > '0') {
        if (triad[1] < '2') {
            int idx = (triad[1] - '0') * 10 + triad[2] - '0' - 1;
            printf ("%s", rus(ones[idx]));
        } else {
            printf ("%s", rus(tens[triad[1] - '0' - 1]));
            if (triad[2] != '0')
                printf (" %s", rus(ones[triad[2] - '0' - 1]));
        }
    } else if (triad[2] > '0') {
        printf ("%s", rus(ones[triad[2] - '0' - 1]));
    }
}
 
void translate (char *num)
{
    int len;
    char triad[4];
    const char *triad_name[] = {
        "", "тысячи", "миллиона", "миллиарда", NULL
    };
    if (*num == '-') {
        num ++;
        printf (rus("минус "));
    }
    len = strlen (num);
    if (len % 3) {
        memset (triad, '0', 3 - len % 3);
        memcpy (triad + 3 - len % 3, num, len % 3);
        triad[3] = '\0';
        translate_triad (triad);
        printf (" %s ", rus(triad_name[len / 3]));
    }
    for (num += len % 3, len /= 3; *num; num += 3) {
        memcpy (triad, num, 3);
        translate_triad (triad);
        printf (" %s ", rus(triad_name [--len]));
    }
}
int main (int argc, char *argv[])
 { 
 char tmp[20];
 printf(rus("Введите число до сотен миллиардов: "));
 scanf("%s",tmp);
 translate(tmp);
 printf("\n");
 return 0; 
 }

а вот то, что я пытался сам сделть. Не полностью записывает почему-то в новый файл:

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
#include <stdio.h>
#include <string.h>
#include <windows.h>
char buf[256];
char *rus(const char *s) {CharToOem(s,buf); return buf;}
 
void translate_triad (char triad[4])
{
 FILE *input;
 input=fopen("out.txt","w+");
     const char *hundreds[] = {
 "сто", "двести", "триста", "четыреста", "пятьсот",
 "шестьсот", "семьсот", "восемьсот", "девятьсот"
 };
     const char *tens[] = {
 "десять", "двадцать", "тридцать", "сорок", "пятьдесят",
 "шестьдесят", "семьдесят", "восемьдесят", "девяносто"
 };
 
     const char *ones[] = {
 "один", "два", "три", "четыре", "пять", "шесть",
 "семь", "восемь", "девять", "десять", "одиннадцать",
 "двенадцать", "тринадцать", "четырнадцать",
 "пятнадцать", "шестнадцать", "семнадцать",
 "восемнадцать", "девятнадцать"
 };
  if (triad[0] != '0')
  {
 printf ("%s ", rus(hundreds[triad[0] - '0' - 1]));
 fputs(hundreds[triad[0] - '0' - 1],input);
  }
 
  if (triad[1] > '0') {
  if (triad[1] < '2') {
  int idx = (triad[1] - '0') * 10 + triad[2] - '0' - 1;
 printf ("%s", rus(ones[idx]));
 fputs(ones[idx],input);
  }  
  else {
 printf ("%s", rus(tens[triad[1] - '0' - 1]));
 fputs(tens[triad[1] - '0' - 1],input);
  }
 if (triad[2] != '0')
 {
 printf (" %s", rus(ones[triad[2] - '0' - 1]));
 fputs(ones[triad[2] - '0' - 1],input);
 }
 
 } 
  else if (triad[2] > '0') {
 printf ("%s", rus(ones[triad[2] - '0' - 1]));
 fputs(ones[triad[2] - '0' - 1],input);
 }
  fclose(input);
}
 
void translate (char *num)
{
 FILE *input;
 int len;
 char triad[4];
 const char *triad_name[] = {
 "", "тысячи", "миллиона", "миллиарда", NULL
 };
 if (*num == '-') 
 {
  num ++;
  printf (rus("минус "));
 }
 len = strlen (num);
 if (len % 3) 
 {
  memset (triad, '0', 3 - len % 3);
  memcpy (triad + 3 - len % 3, num, len % 3);
  triad[3] = '\0';
  translate_triad (triad);
  printf (" %s ", rus(triad_name[len / 3]));
 }
 for (num += len % 3, len /= 3; *num; num += 3) {
 memcpy (triad, num, 3);
 translate_triad (triad);
 //printf (" %s ", rus(triad_name [--len]));
 input=fopen("out.txt","a");
 fputs(triad_name[--len],input);
 fclose(input);
 }
}
 
int main (int argc, char *argv[])
 {
 FILE *input;
 char tmp[20]=" ";
// printf(rus("Введите число до сотен миллиардов: "));
 //scanf("%s",tmp);
 
 
 if ((input=fopen("number.txt","r")) == NULL)
 printf(rus("Файл не найден, повторите ввод"));
fgets(tmp,19,input);
fclose(input);
translate(tmp);
// printf("\n");
 return 0;
 }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.05.2011, 22:50     Считывание и запись в файл.
Посмотрите здесь:

Считывание и запись матрицы из/в файл C++
Считывание и запись в файл C++
C++ Считывание и запись в файл
C++ считывание и запись в файл
C++ Считывание и запись в файл
C++ Считывание и запись в файл Visual Studio
C++ Считывание и запись в файл по 8 байт
C++ Запись/считывание vector в/из файл

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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