Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 17.10.2011
Сообщений: 21

Работа с файлами мешает выводу

23.10.2011, 00:42. Показов 553. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Массив структур, в ней две структуры.
Инициализация проводится с файла 123.тхт находящимся в каталоге с программой.
В этой программе я начал впервые работать с файлами и у меня начались проблемы с выводом( в консоль). Чую я наделал много ошибок...Файл после инициализации закрыл. Выполнение поставленой задачи реализовывается в функциях a,b,c, но пока самих задач нет
Код программы:
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
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
 void a(struct znayomi* d,int r);
 void b(struct znayomi* d,int r);
 void c(struct znayomi* d,int r);
 struct znayomi
 {
    struct name
        {
        char* name1;  //ima
        char* name2;  //familiya
        }names;
    struct adres
        {
        char* ulica;
        int nomer;
        }adr;
    int tel;
 };
 void main()
 {
 clrscr();
 int n,r,i;
 struct znayomi* d;
 FILE* f;
 d=new znayomi[n];
 //shablon.zapis
 f=fopen("123.txt","rt");
 fscanf(f,"%d\n\n", &r);
 for(i=0;i<r;++i)
 {
 fscanf(f,"%s\n%s\n%s\n%d\n%d\n\n", d[i].names.name1, d[i].names.name2, d[i].adr.ulica, &d[i].adr.nomer, &d[i].tel);
 }
 fclose(f);
 int nom;
 printf("1.Spisok ludei s ulicu\n");
 printf("2.Naiti telefon zadanogo cheloveka\n");
 printf("3.Naiti vladelca telefona");
 printf("Viberite nomer zadania\n");
 scanf ("\n%d", &nom);
 if (nom==1)
 { a(d,r); }
 if (nom==2)
 { b(d,r); }
 if (nom==3)
 { c(d,r); }
 getch();
 }
  void a(struct znayomi* d,int r)
 {
 char* x;int i;
 printf("\nVvedite ulicu\n");
 scanf ("\n%s", x);
 for(i=0;i<r;++i)
 if(strcoll(x,d[i].adr.ulica)==0)
 {printf(" %s %s projivaet na dannoi ulice \n", d[i].names.name1,d[i].names.name2);}
 printf("\nPoisk ludei na ulice %s", x);
 getch();
 }
  void b(struct znayomi* d,int r)
 {
 }
  void c(struct znayomi* d,int r)
 {
 }
Файл 123.тхт
PureBasic
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
6
 
name1
name22
street1
1
111
 
name2
name21
street2
1
222
 
name3
name22
street2
1
444
 
name4
name22
street4
2
111
 
name4
name23
street5
5
111
 
name6
name26
street1
6
666
первая строка - кол-ство людей.
Шаблон:

d[i].names.name1
d[i].names.name2
d[i].adr.ulica
d[i].adr.nomer
d[i].tel

Массив инициализируется правильно, и вроде правильно передается в функции.
Пока что сделал задачу а.
Алгоритм вроде работает правильно , но когда я ввожу street1, возникает какие-то "лишние символы".
Потом попыстался после:
C++
1
 printf("\nVvedite ulicu\n");
вставить
C++
1
 printf("\n123 ");
из за чего список заданий в маин вообще пошел одной строчкой и через слово...( результат в изображении)
буду рад за помощь...

и еще если кто может подсказать : как освободить памят от массива структур.

Компилятор Борланд 3.1
Миниатюры
Работа с файлами мешает выводу  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.10.2011, 00:42
Ответы с готовыми решениями:

Работа с файлами , хотелось бы с windows system файлами
всем привет, нужна интересная идея по программированию, работа с файлами , хотелось бы с windows system файлами, у вас есть какая-то идея?...

Лабораторная работа №5. Работа с файлами и алгоритмы сортировки
1. Написать функцию Load для считывания из текстового файла (например, Workers.txt) информации о работниках и заработной плате. В первой...

Работа с файлами(Запись,чтение,работа с данными)
Здравствуйте, никак не могу осилить файлы... Для начала вот само задание: В справочной автовокзала хранится расписание движения автобусов....

3
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
23.10.2011, 13:25
Цитата Сообщение от Az riel Посмотреть сообщение
fscanf(f,"%s\n%s\n%s\n%d\n%d\n\n"
- программа наверое здесь и вылетает
Цитата Сообщение от Az riel Посмотреть сообщение
char* name1; *//ima
* * * * * * * * char* name2; *//familiya
- под строковые поля структуры не выделена память!
Для простоты выдели под поля 32 символа(можешь больше) и попробуй снова
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
struct znayomi
 {
        struct name
                {
                char name1[32];  //ima
                char name2[32];  //familiya
                }names;
        struct adres
                {
                char ulica[32];
                int nomer;
                }adr;
        int tel;
 };
дальше не проверял возможно ещё косяки есть, но мне бы хотелось после моего замечания работу алгоритма посмотреть
1
0 / 0 / 0
Регистрация: 17.10.2011
Сообщений: 21
23.10.2011, 13:48  [ТС]
Вот оно, наказание за мою халатность. Проблема решилась при подстановке константных значений
Вообще то мне надо динамические массивы для точности, но я хоть знаю что проблемы с выделением памяти, спасибо
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
23.10.2011, 13:56
Цитата Сообщение от Az riel Посмотреть сообщение
надо динамические массивы для точности
- тут сложность в том что мы не знаем заранее длинны строки хранимой в файле, поэтому
1 нужно сначало узнавать её длинну,
затем
2 выделить память под нужное поле
char * name1 = (char *)malloc(sLen*sizeof(char));
А лишь потом запускать
Цитата Сообщение от Az riel Посмотреть сообщение
fscanf(f,"%s\n%s\n%s\n%d\n%d\n\n"
Вобще я делал приблизиельно так
C++
1
2
3
4
5
6
7
8
9
struct some_struct
{
   char * field;
}
 
some_struct pstr;
pstr.field = (char *)malloc(sizeof(char));
 
pstr.field = (char *)realloc((void *)pstr.field, sLen*sizeof(char));
т.е реаллокал в программе многократно поле, а память выделял маллоком лишь один раз, так на мой взгляд эффективней бороться с утечками памяти
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.10.2011, 13:56
Помогаю со студенческими работами здесь

Работа с файлами, чтение/работа со строкой
Доброго времени суток. Начал работать с C++ Builder 6. Есть текстовый файл .txt с различными строками, как можно производить...

Работа с файлами
Доброго времени суток! Помогите! Сведения об ученике состоят из его имени и фамилии и названия класса (года обучения и буквы), в котором...

Работа с Файлами
Дан текст, заканчивающийся точкой. Подсчитать, сколько в нем слов. При выполнении задания необходимо текст считать из текстового...

Работа с файлами
Даже не знаю как код записать примерно.Помогите ,а то вообще не могу понять и написать : разработать программу для работы с файлами на...

Работа с файлами
Напишите программу, которая сортирует натуральные числа, записанные в файле , по возрастанию последней цифры десятичной записи. Числа, у...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru