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

Работа с текстовым файлом - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Сортировкой С++ или Ошибка. http://www.cyberforum.ru/cpp-beginners/thread137392.html
написал программу по заданию( необходимо через указатели ) но после проверки сортировки нету. Код Записан на С++ #include <iostream.h> #include <conio.h> #include <string.h> #pragma argsused int main(int argc, char* argv) {
C++ Операция mod() Подскажите, pls, как осуществить операцию m mod n (вычисление остатка) не используя операцию деления в процессе вычисления? http://www.cyberforum.ru/cpp-beginners/thread137390.html
C++ Преобразовать double в string
Подскажите как преобразовать double в string ?? Нашел что то похожее при помощи ostringstream , но там не совсем то.. Преобразование string в double реализовал следующим образом: double val = atof(stroka.c_str()); , где stroka - объект класса string. Правильно?
Вычислить сумму элементов , pасположенных на главной диагонали и выше ее C++
Дана действительная квадpатная матpица поpядка n (n<=8). Вычислить сумму тех ее элементов , pасположенных на главной диагонали и выше ее,котоpые пpевосходят по величине все элементы, pасположенные ниже главной диагонали. Если таких элементов нет , вывести на экpан соответствующее сообщение. Я понимаю, что прога не сложная, но я просто не догоняю... P.S TC.....
C++ Найти сумму чисел, кратную трем. http://www.cyberforum.ru/cpp-beginners/thread137359.html
найти сумму i(Е сверху N, снизу i=1 ) кратно трём!
C++ Работа с Массивами: реализация списка через массив? В общем: Можно ли записать в ячейку массива больше одного символа? Можно ли с помощью массива сделать к примеру список дел, т.е. я пишу "Вымыть посуду", "Помыть пол" и эта информация вводится в первую и вторую ячейку массива соотвественно, Если же нельзя, то подскажите как можно реализовать это? (т.е. чтобы записывать дела и чтобы потом их можно было удалять - редактировать - добавлять. ... подробнее

Показать сообщение отдельно
gluck-a
0 / 0 / 0
Регистрация: 28.05.2010
Сообщений: 23
29.05.2010, 02:12     Работа с текстовым файлом
Люди добрые и злые, помогите пожалуйста! Пишу курсовую, так сложилось, что в с++ не шарю, а для сдачи нужно))))У меня происходит ошибка, точнее не понятное зацикливание (мне не понятное) при чтении с файла
вся программа выглядит вот так и даж запускается(пока сырая и функции делают пока что не то что им пологается)) при условие что файл BD.dat пустой)
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
#include <iostream>
#include <stdio.h>
#include <windows.h>
using namespace std;
 
struct clientData {
    int ID;
    char lastName[15];
    char firstName[10];
    double balance;
};
 
void Create_report(void);
void Add(void);
void Delete(void);
int enterChoise(void);
 
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
 
    int choise;
    int ID;
    char lastName[15];
    char firstName[10];
    double balance;
    FILE *cfPtr;
    cfPtr=fopen("d:\BD.dat","r");
        printf("%-10s %-15s %-20s% s\n", "ID","Фамилия","Имя","Balance");
        fscanf(cfPtr,"%d%s%s%lf",&ID,lastName,firstName,&balance);
        while(!feof(cfPtr))
        {
        printf("%-10d %-15s %-20s %.2lf\n",ID, lastName ,firstName, balance );
        fscanf(cfPtr,"%d%s%s%lf",&ID,lastName,firstName,&balance);
        }
        fclose(cfPtr);
 
    while( (choise = enterChoise()) != 4) {
        switch ( choise ) {
            case 1:
                Create_report();
                break;
            case 2:
                Add();
                break;
            case 3:
                Delete();
                break;
        }
    }
    return 0;
}
 
void Create_report(void)
{
    FILE *cfPtr;
    int i;
    struct clientData blankClient = { 0, "", "", 0.0};
 
    if((cfPtr = fopen("d:\BD.dat", "w")) == NULL)
        printf("Файл не найден, или не доступен\n");
    else {
        for(i = 1; i <= 15; i++)
            fwrite(&blankClient,
                    sizeof(struct clientData), 1, cfPtr);
        fclose(cfPtr);
    }
}
 
void Add(void)
{
    FILE *cfPtr;
    struct clientData client = { 0, "", "", 0.0};
 
 
 
 
 
 
    if((cfPtr = fopen("d:\BD.dat", "r+")) == NULL)
        printf("Файл не найден, или не доступен\n");
    else {
        printf("ВВедите номар ID" " (от 1 до 100, 0 для выхода в меню)\n?");
        
        scanf("%d", &client.ID);
 
        while( client.ID != 0){
            printf("Введите Фамилию, Имя и balance\n?");
            fscanf(stdin, "%s%s%lf", client.lastName,
                client.firstName, &client.balance);
            fseek(cfPtr, (client.ID - 1) * sizeof(struct clientData), SEEK_SET);
            fwrite(&client, sizeof(struct clientData), 1,cfPtr);
            printf("Введите ID номер\n?");
            scanf("%d", &client.ID);
        }
        fclose(cfPtr);
    }
}
 
void Delete(void)
{
    FILE *cfPtr;
    struct clientData client = { 0, "", "", 0.0};
 
    if((cfPtr = fopen("d:\BD.datt", "r")) == NULL)
        printf("Файл не найден, или не доступен\n");
    else {
        printf("%-6s%-16s%-11s%10s\n", "Acct", "Last Name",
                "First Name", "Balance");
 
        while(!feof(cfPtr)) 
            fread(&client, sizeof( struct clientData), 1, cfPtr);
            if (client.ID != 0)
                printf("%-6d%-16s%-11s%10.2f\n",
                client.ID, client.lastName,
                client.firstName, client.balance);
        }
        fclose(cfPtr);
    }
    
 
 
int enterChoise(void)
{
    int menuChoise;
 
    printf("\nГлавное меню\n"
        "1 - Создать отчет по зарплатам\n"
        "2 - добавить запись\n"
        "3 - удалить запись\n"
        "4 - выход\n?");
    scanf("%d", &menuChoise);
    return menuChoise;
}
а проблема тут:
C++
1
2
3
4
5
6
7
8
9
10
FILE *cfPtr;
    cfPtr=fopen("d:\BD.dat","r");
        printf("%-10s %-15s %-20s% s\n", "ID","Фамилия","Имя","Balance");
        fscanf(cfPtr,"%d%s%s%lf",&ID,lastName,firstName,&balance);
        while(!feof(cfPtr))
        {
        printf("%-10d %-15s %-20s %.2lf\n",ID, lastName ,firstName, balance );
        fscanf(cfPtr,"%d%s%s%lf",&ID,lastName,firstName,&balance);
        }
        fclose(cfPtr);
а клин выглядит вооон как на скрине:
Миниатюры
Работа с текстовым файлом  
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 04:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru