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

работа с файлами в С/C++ - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ массивы http://www.cyberforum.ru/cpp-beginners/thread105797.html
Заданы две таблицы. Одна cодержит наименование услуг, а другая – расценки за эти услуги. Удалите из обеих таблиц все, что предшествует услуге, цена которой P рублей. Дан одномерный массив из 10...
C++ Количество элементов массива У меня есть функция, в которой я создаю массив char. Мне нужно сделать так, чтобы кол-во элементов массива зависело от значения другой переменной (int). К примеру function (int a) { char... http://www.cyberforum.ru/cpp-beginners/thread105766.html
Возвращающееся значение. C++
Если у меня функция возвращает указатель на начало char массива (имя массива), то как она должна в заголовке обзываться: char function() или char* function() ?
C++ Найти номер ее столбца с наименьшим произведением элементов
Помогите пожалуйста с исходным кодом, как решить на языке программирования С++... Matrix26. Дана матрица размера M × N. Найти номер ее столбца с наименьшим произведением элементов и вывести данный...
C++ графика C++ http://www.cyberforum.ru/cpp-beginners/thread105727.html
Добрый день! Народ, такая проблема: мне нужно что-то нарисовать в C++, но #include <graphics.h> не работает - он ее не находит, пишет, что библиотека не найдена! Что мне делать, какие библиотеки C++...
C++ Указатели Условие: P1 - float; P2 - long; P3 - double; AB - (abs(p3))^1/p2 Подскажите, почему выдаёт ошибку Cannot convert 'double *' to 'float *'? в коде: #include <stdio.h> #include <conio.h>... подробнее

Показать сообщение отдельно
accept
4822 / 3243 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
18.03.2010, 11:05
Код
[guest@station test]$ ./test
value:     34335.09067, field: 1, quantity:    4
value:     34335.76734, field: 1, quantity:    2
value:           32549, field: 2, quantity:  128
value:            -886, field: 4, quantity:    3
value:                , field: 0, quantity:    0
value:                , field: 0, quantity:    0
value:                , field: 0, quantity:    0
value:                , field: 0, quantity:    0
value:                , field: 0, quantity:    0
value:                , field: 0, quantity:    0
[guest@station test]$
набросок

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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
#include <assert.h>
 
struct value {
    int field;
    char value[30];
    int quant;
};
 
char **ReadFile(const char *);
char *DupLine(const char *);
struct value *CountValues(const char **);
void PrintValues(struct value *);
 
/*  */
int main(void) /* ANSI C89 */
{
    char **lines;
    struct value *values;
    
    
    lines = ReadFile("file.txt");
    
    if (lines == NULL)
        assert(0 && "read lines");
    
    
    values = CountValues((const char **) lines);
    
    if (values == NULL)
        assert(0 && "count values");
    
    {
        int i;
        
        for (i = 0; i < 1000; i++)
            free(lines[i]);
    }
    
    free(lines);
    
    
    PrintValues(values);
        
    free(values);
    
    
    exit(EXIT_SUCCESS);
}
 
char **ReadFile(const char *file)
{
    FILE *ifp;
    char **lines, *oneline;
    const int n = 1000;
    
    enum { MAXLINE = 1000 };
    int i;
 
    
    ifp = fopen(file, "r");
    
    if (ifp == NULL)
        assert(0 && "open file");
    
    
    lines = (char **) malloc(n*sizeof(char *));
    
    if (lines == NULL)
        assert(0 && "allocate lines");
    
 
    oneline = (char *) malloc(MAXLINE);
    
    if (oneline == NULL)
        assert(0 && "allocate one line");
    
    
    for (i = 0; i < n; i++) {
 
        char *readline;
        
        readline = fgets(oneline, MAXLINE, ifp);
 
        if (readline == NULL)
            assert(0 && "read one line");
        
        lines[i] = DupLine(readline);
        
        if (lines[i] == NULL)
            assert(0 && "duplicate one line");
 
    }
    
    
    free(oneline);
    
    fclose(ifp);
       
    
    return lines;
}
 
char *DupLine(const char *line)
{
    char *newline;
    
    newline = (char *) malloc(strlen(line)+1);
    
    if (newline == NULL)
        return newline;
    
    strcpy(newline, line);
    
    return newline;
}
 
struct value *CountValues(const char **lines)
{
    struct value *values;
    const int nv = 100;
    
    
    values = (struct value *) malloc(nv*sizeof(struct value));
 
    if (values == NULL)
        assert(0 && "allocate values");
    
        
    values[0].field = 1;
    strcpy(values[0].value, "34335.09067");
    values[0].quant = 4;
    
    values[1].field = 1;
    strcpy(values[1].value, "34335.76734");
    values[1].quant = 2;
    
    values[2].field = 2;
    strcpy(values[2].value, "32549");
    values[2].quant = 128;
 
    values[3].field = 4;
    strcpy(values[3].value, "-886");
    values[3].quant = 3;
   
    /* ... */
 
    
    return values;
}
 
void PrintValues(struct value *values)
{
    const int nv = 10; /* 100; */
    int i;
    
    for (i = 0; i < nv; i++)
        printf("value: %15s, field: %d, quantity: %4d" "\n",
            (values+i)->value, (values+i)->field,
            (values+i)->quant);
}


Добавлено через 8 минут
уматнее, конечно, разложить это на модули
и уже, когда строки есть, спокойно порезать их для подсчёта
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru