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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.94
PapaKarlito
0 / 0 / 0
Регистрация: 03.10.2013
Сообщений: 24
#1

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

02.12.2013, 03:45. Просмотров 2718. Ответов 36
Метки нет (Все метки)

Программа компилится, но не может открыть файл studenti.txt. Куда этот файл точно кидать, что бы программа его находила?


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
165
166
167
168
#include <stdio.h>
#include <conio.h>
#include <string.h>                             //libraries
#include <windows.h>
#include <iostream>
 
#define N 20
 
int main()
{
    struct individual                           //define structure for  
    {
        // Nr., Name, Surname, DOB
        int Nr;
        char name[30], surname[30];
        struct birth
        {
            int day;                                  //hell yeah a structure within a structure
            int month;                                //INCEPTION
            int year;
        }date;
    }student[N], temp[1];
    int i, j, last, out, choice, exists;         //some handy variables
 
 
 
    FILE *list;                                 //will be operating in two files
    FILE *list_sorted;                          //original and edited
    errno_t err;
    system("cls");
    out = 0;                                      //initialize some stuff
    j = 0;
    exists = 0;
    last = 0;
 
    do                                          //a while loop for menu
    {
        //useful stuff. but takes a shitton of time to debug
        system("cls");
        printf("MENU:\n1.Aizpildit sarakstu no faila.'studenti.txt'.\n2.Papildinat sarakstu ar rokam.\n");
        printf("3.Paradit sarakstu.\n4.Atrast studentu, kura vards un uzvards atbilst lietotaja ievaditajiem datiem\n5.Iziet\n");
        scanf_s("%d", &choice);
        switch (choice)
        {
        case 1:                                                                //case 1 to scan a file and read all data from it.
        
            if ((err = fopen_s(&list,"studenti.txt", "r")) == NULL) {
    
 
                printf("Nevar atvert failu \n");
                system("pause");
                exit(1);
            }
 
            for (i = 0; i < N; i++)
            {
                //since there is no way to return the number of the lines in a file
                fscanf_s(list, "%d", &student[i].Nr);           //and if we try to return a nonexistent line, it will se the pointer to the end of line
                fscanf_s(list, "%s", &student[i].name);         //the return will be gibberish, but the pointer will stand on the same way before 
                fscanf_s(list, "%s", &student[i].surname);      //and after the attempt to read stuff.
                fscanf_s(list, "%d", &student[i].date.day);     //therefore, if we see that pointer position doesnt change, we know ir is at the end.fscanf(list, "%1c");
                fscanf_s(list, "%d", &student[i].date.month);   //if so, we break out of the loop for it is set to go through the maximum list size N.
                fscanf_s(list, "%d", &student[i].date.year);
                if (feof(list))
                {
                    last = i;
                    break;
                }
            }
            fclose(list);
            exists = 1;                                    //tiny variable for later use, to avoid processing empty list
 
            break;
 
 
        case 2:
            choice = 0;
            while (choice != 1)
            {
                student[last].Nr = last;
                printf("\nIevadiet %d. studenta informaciju\n", last);
                printf("Vards: ");
                scanf_s("%s", &(student[last].name));
                printf("Uzvards: ");
                scanf_s("%s", &(student[last].surname));                            //manual input of data into structure.
                printf("Dzimshanas datums. DIENA: ");
                scanf_s("%2d", &(student[last].date.day));
                printf("Dzimshanas datums. MENESIS: ");
                scanf_s("%2d", &(student[last].date.month));
                printf("Dzimshanas datums. GADS: ");
                scanf_s("%2d", &(student[last].date.year));
                printf("\n Pievienot vel? (1=beigt)");                            //in order to give user the freedom to choose how many
                scanf_s("%d", &choice);                                             //items to add, we ask him at the end of every loop.
                last++;                                                           //this way ca avoid making him write in t once 20 lines.
            }
            exists = 1;
            break;
 
 
        case 3:
            system("cls");
            if (exists > 0)                                                        //here's where we need the exists variable. if we don't have
            {
                //a check for structure existance, the compiler goes bananas trying to print. 
                printf("Studentu saraksts:\n");
                for (i = 0; i < last; i++)
                {
                    printf("%2d%15s%15s%10d.%2d.%2d\n", student[i].Nr, student[i].name, student[i].surname,
                        student[i].date.day,
                        student[i].date.month,
                        student[i].date.year);
                }
            }
            else printf("Ludzu izveidojiet sarakstu!\n");
            system("pause");
 
 
 
        case 4:
            system("cls");
            if (exists > 0)
            {
                printf("Ievadiet studenta vardu:\n");
                scanf_s("%s", &(student[j].name));
                printf("Ievadiet studenta uzvardu: ");
                scanf_s("%s", &(student[j].surname));
 
                for (j = 0; j < last; j++)
                {
                    for (i = 0; i < last; i++)
                    {
                        if (student[i].name == student[j].name && student[i].surname == student[j].surname)
                        {
                            printf("Saraksta ir tads students un atrodas %d pozicija\n", i);
                        }
                        else {
                            printf("Tada studenta saraksta nav\n");
                        }
                        
                        }
                    }
                }
                
            
            else printf("Ludzu izveidojiet sarakstu!\n");
            system("pause");
            break;
 
        
 
 
        case 5:
            out = 1;
            break;
 
 
        default:
            system("cls");
            printf("Ludzu izveidojiet sarakstu!\n");
            system("pause");
            break;
 
        }
    }
    while (out!=1);
    out = 0;
    return 0;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.12.2013, 03:45
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Работа с текстовым файлом в Visual Studio (C++):

Работа с текстовым файлом - C++
Создать текст файл с произвольной инфой. Организовать просмотр содержиммого файла.Организовать чтение и обработку данных из файла в...

Работа с текстовым файлом - C++
Дан текстовый файл, фразы в котором отделены друг от друга точками, а слова – пробелами и знаками препинания. Удалить из этого файла лишние...

Работа с текстовым файлом - C++
Всем доброго вечера! Имеется текстовый файл в котором информация занесена таким образом -Название государства, Численность, Плотность....

Работа с текстовым файлом С++ - C++
Здравствуйте! Помогите написать программу которая будет выводить на консоль студентов, имеющих по трём предметам (Math Analysis, Physics,...

Работа с текстовым файлом - C++
Дан текстовый файл, имеющий более 3х строк. Задание: удалить из файла последние три строки. Заранее спасибо всем, кто поможет.

Работа с текстовым файлом - C++
Здравствуйте все! Мне очень нужна помощь в написании кода программы для работы с текстовым файлом. Допустим, у меня есть документ.txt...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
alsav22
5420 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
02.12.2013, 19:43 #16
Цитата Сообщение от PapaKarlito Посмотреть сообщение
а то со студио всегда надо с бубном танцевать
У меня 10 студия, и ничего, не танцую с бубном.
0
PapaKarlito
0 / 0 / 0
Регистрация: 03.10.2013
Сообщений: 24
02.12.2013, 19:54  [ТС] #17
всеравно у меня не хочет текстовой файл находить, написал вместо err,так как вы предложили, все скомпилилось.
моли бы вы вообще затестить прогу, если не трудно, может еще какие ошибки нашли бы? был бы очень благодарен)
0
alsav22
5420 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
02.12.2013, 20:01 #18
Пишите ясней. Я не понял: файл и сейчас не находит? Т.е., при выборе 1-го пункта меню, выводится сообщение: "Nevar atvert failu" ?
0
PapaKarlito
0 / 0 / 0
Регистрация: 03.10.2013
Сообщений: 24
02.12.2013, 20:06  [ТС] #19
дап, именно так
0
alsav22
5420 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
02.12.2013, 20:10 #20
Файл вручную создавали? Расширения файлов, в системе, видны?

Добавлено через 1 минуту
И код, который пробуете, покажите.
0
PapaKarlito
0 / 0 / 0
Регистрация: 03.10.2013
Сообщений: 24
02.12.2013, 20:13  [ТС] #21
да, файл в ручную
0 Filip Kirkorov 32 12 65
1 Valentin Strikalo 22 03 92
2 Maksim Galkin 12 08 66
3 Aragorn Berestov 06 02 67
4 Peter Griffin 22 04 55
5 Aleksandr Pushkin 13 07 22
6 Peter Pervij 28 12 52
7 Anna Ahmatova 12 07 22
8 Aleksandr Makedonskij 12 02 22

с такими данными и название studenti.txt

вот код:

#include <stdio.h>
#include <conio.h>
#include <string.h> //libraries
#include <windows.h>
#include <iostream>

#define N 20

int main()
{
struct individual //define structure for
{
// Nr., Name, Surname, DOB
int Nr;
char name[30], surname[30];
struct birth
{
int day; //hell yeah a structure within a structure
int month; //INCEPTION
int year;
}date;
}student[N], temp[1];
int i, j, last, out, choice, exists; //some handy variables



FILE *list; //will be operating in two files
FILE *list_sorted; //original and edited

system("cls");
out = 0; //initialize some stuff
j = 0;
exists = 0;
last = 0;

do //a while loop for menu
{
//useful stuff. but takes a shitton of time to debug
system("cls");
printf("MENU:\n1.Aizpildit sarakstu no faila.'studenti.txt'.\n2.Papildinat sarakstu ar rokam.\n");
printf("3.Paradit sarakstu.\n4.Atrast studentu, kura vards un uzvards atbilst lietotaja ievaditajiem datiem\n5.Iziet\n");
scanf_s("%d", &choice);
switch (choice)
{
case 1: //case 1 to scan a file and read all data from it.

if ((list = fopen("studenti.txt", "r")) == NULL) {


printf("Nevar atvert failu \n");
system("pause");
exit(1);
}

for (i = 0; i < N; i++)
{
//since there is no way to return the number of the lines in a file
fscanf_s(list, "%d", &student[i].Nr); //and if we try to return a nonexistent line, it will se the pointer to the end of line
fscanf_s(list, "%s", &student[i].name); //the return will be gibberish, but the pointer will stand on the same way before
fscanf_s(list, "%s", &student[i].surname); //and after the attempt to read stuff.
fscanf_s(list, "%d", &student[i].date.day); //therefore, if we see that pointer position doesnt change, we know ir is at the end.fscanf(list, "%1c");
fscanf_s(list, "%d", &student[i].date.month); //if so, we break out of the loop for it is set to go through the maximum list size N.
fscanf_s(list, "%d", &student[i].date.year);
if (feof(list))
{
last = i;
break;
}
}
fclose(list);
exists = 1; //tiny variable for later use, to avoid processing empty list

break;


case 2:
choice = 0;
while (choice != 1)
{
student[last].Nr = last;
printf("\nIevadiet %d. studenta informaciju\n", last);
printf("Vards: ");
scanf_s("%s", &(student[last].name));
printf("Uzvards: ");
scanf_s("%s", &(student[last].surname)); //manual input of data into structure.
printf("Dzimshanas datums. DIENA: ");
scanf_s("%2d", &(student[last].date.day));
printf("Dzimshanas datums. MENESIS: ");
scanf_s("%2d", &(student[last].date.month));
printf("Dzimshanas datums. GADS: ");
scanf_s("%2d", &(student[last].date.year));
printf("\n Pievienot vel? (1=beigt)"); //in order to give user the freedom to choose how many
scanf_s("%d", &choice); //items to add, we ask him at the end of every loop.
last++; //this way ca avoid making him write in t once 20 lines.
}
exists = 1;
break;


case 3:
system("cls");
if (exists > 0) //here's where we need the exists variable. if we don't have
{
//a check for structure existance, the compiler goes bananas trying to print.
printf("Studentu saraksts:\n");
for (i = 0; i < last; i++)
{
printf("%2d%15s%15s%10d.%2d.%2d\n", student[i].Nr, student[i].name, student[i].surname,
student[i].date.day,
student[i].date.month,
student[i].date.year);
}
}
else printf("Ludzu izveidojiet sarakstu!\n");
system("pause");



case 4:
system("cls");
if (exists > 0)
{
printf("Ievadiet studenta vardu:\n");
scanf_s("%s", &(student[j].name));
printf("Ievadiet studenta uzvardu: ");
scanf_s("%s", &(student[j].surname));

for (j = 0; j < last; j++)
{
for (i = 0; i < last; i++)
{
if (student[i].name == student[j].name && student[i].surname == student[j].surname)
{
printf("Saraksta ir tads students un atrodas %d pozicija\n", i);
}
else {
printf("Tada studenta saraksta nav\n");
}

}
}
}


else printf("Ludzu izveidojiet sarakstu!\n");
system("pause");
break;

case 5:
out = 1;
break;

default:
system("cls");
printf("Ludzu izveidojiet sarakstu!\n");
system("pause");
break;

}
}
while (out!=1);
out = 0;
return 0;
}
0
alsav22
5420 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
02.12.2013, 20:23 #22
Цитата Сообщение от PapaKarlito Посмотреть сообщение
да, файл в ручную
Я не один вопрос задал.

Добавлено через 3 минуты
В моём коде разве так?
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
case 1: //case 1 to scan a file and read all data from it.
 
 if ((list = fopen("studenti.txt", "r")) == NULL) {
 
 
 printf("Nevar atvert failu \n");
 system("pause");
 exit(1);
 }
 
 for (i = 0; i < N; i++)
 {
 //since there is no way to return the number of the lines in a file
 fscanf_s(list, "%d", &student[i].Nr); //and if we try to return a nonexistent line, it will se the pointer to the end of line
 fscanf_s(list, "%s", &student[i].name); //the return will be gibberish, but the pointer will stand on the same way before 
 fscanf_s(list, "%s", &student[i].surname); //and after the attempt to read stuff.
 fscanf_s(list, "%d", &student[i].date.day); //therefore, if we see that pointer position doesnt change, we know ir is at the end.fscanf(list, "%1c");
 fscanf_s(list, "%d", &student[i].date.month); //if so, we break out of the loop for it is set to go through the maximum list size N.
 fscanf_s(list, "%d", &student[i].date.year);
 if (feof(list))
 {
 last = i;
 break;
 }
 }
 fclose(list);
 exists = 1; //tiny variable for later use, to avoid processing empty list
 
 break;
0
PapaKarlito
0 / 0 / 0
Регистрация: 03.10.2013
Сообщений: 24
02.12.2013, 20:30  [ТС] #23
расширения файлов в системе не видны, но studenti точно .txt. скопировал полностью ваш код и так же без изменений
0
alsav22
5420 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
02.12.2013, 20:42 #24
Цитата Сообщение от PapaKarlito Посмотреть сообщение
расширения файлов в системе не видны
Т.е., в папке проекта (там где находится файл с main()), текстовый файл выглядит как studenti? Или выглядит как studenti.txt ? Именно, как выглядит (смотрите и видите...) в папке проекта?
0
PapaKarlito
0 / 0 / 0
Регистрация: 03.10.2013
Сообщений: 24
02.12.2013, 20:50  [ТС] #25
сделал сейчас, что бы было видно studenti.txt всеравно nevar atvert failu
0
alsav22
5420 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
02.12.2013, 21:01 #26
Цитата Сообщение от PapaKarlito Посмотреть сообщение
сделал сейчас, что бы было видно studenti.txt всеравно nevar atvert failu
Я вам об одном, вы мне о другом... Скрин покажите с содержимым папки проекта.
0
PapaKarlito
0 / 0 / 0
Регистрация: 03.10.2013
Сообщений: 24
02.12.2013, 21:10  [ТС] #27
В какой именно папке? в самой программе или там где проекты хранятся?
0
PapaKarlito
0 / 0 / 0
Регистрация: 03.10.2013
Сообщений: 24
02.12.2013, 21:17  [ТС] #28
вот скрин
Работа с текстовым файлом в Visual Studio
0
alsav22
5420 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
02.12.2013, 21:25 #29
Цитата Сообщение от PapaKarlito Посмотреть сообщение
В какой именно папке? в самой программе или там где проекты хранятся?
Не скрин окна студии. Папка проекта - это папка на жёстком диске (не в обозревателе решений), где находится файл с расширением .vcxproj, а также файл с кодом программы (насколько вижу, sourсe.cpp). Там должен находиться файл для чтения.
0
PapaKarlito
0 / 0 / 0
Регистрация: 03.10.2013
Сообщений: 24
02.12.2013, 21:27  [ТС] #30
да, там он и есть, с расширением .txt
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.12.2013, 21:27
Привет! Вот еще темы с ответами:

Работа с текстовым файлом - C++
Добрый вечер, помогите пожалуйста с решением следущей проблемы: Есть текстовый файл, в котором находится 40 000 различных английских...

Работа с текстовым файлом - C++
Нужно программа которая добавляет записи в файл вида: - Структура &quot;Спортивная команда&quot;: - название; - город; - количество...

Работа с текстовым файлом - C++
Здравствуйте ребята, на практических столкнулась с проблемой, необходима ваша помощь) Есть открытый текстовый файл с несколькими строками...

Работа с текстовым файлом - C++
Вот часть кода: void ReadFile(ifstream &amp;fin, int Kol_Ar) { //чтение данных из файла и вывод на консоль CCust *ReadF = new...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
02.12.2013, 21:27
Ответ Создать тему
Опции темы

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