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

удаление списка в с++ - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.91
anton88-2006
0 / 0 / 0
Регистрация: 24.01.2011
Сообщений: 5
24.01.2011, 20:58     удаление списка в с++ #1
всем привет!
Начал работать в консольных приложениях.
Проблема такова: с помощью консоли я создаю список в текстовом документе.
После создания этого списка, с помощью консоли я смог бы этот список подкорректировать, тобишь добавить товар, изменить, удалить.
Пример:
15487 чайник 49,99
14489 телефон 119 99,

так идет лист на сто строк. К примеру у номера 6 упала цена, тогда я вызываю его через консоль и изменяю, или удаляю. Причем удаление или изменении не должно повлиять на другие товары.
Спасибо за ответы.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
D@rkD@iver
110 / 110 / 3
Регистрация: 01.10.2008
Сообщений: 876
25.01.2011, 08:36     удаление списка в с++ #2
загружаешь весь списов в массив
делаешь что нужно и сохраняешь его обратно
anton88-2006
0 / 0 / 0
Регистрация: 24.01.2011
Сообщений: 5
25.01.2011, 22:49  [ТС]     удаление списка в с++ #3
Цитата Сообщение от D@rkD@iver Посмотреть сообщение
загружаешь весь списов в массив
делаешь что нужно и сохраняешь его обратно
а вот здесь не много по подробнее.
ну открыл я к примеру список.
Код
fscanf(text.txt,"%i %s %i", Nr[n],Name[n],Date[n]);
printf(text.txt,"%i %s %i", Nr[n],Name[n],Date[n]");
как мне удалить или поменять что нить из списка?
З.Ы язык с неделю изучаю, так что не будь ко мне слишком строг)
если возможно, объясни наглядным примером как это сделать
D@rkD@iver
110 / 110 / 3
Регистрация: 01.10.2008
Сообщений: 876
26.01.2011, 07:15     удаление списка в с++ #4
C++
1
2
3
4
5
Record a[100];
for (int i=0; i<n; i++)
{
       fscanf(f, "%i %s %i", &a[i].Nr,&a[i].Name,&a[i].Date);
}
потом работаешь с этим массивом изменяешь удаляешь и тд
а потом сохраняешь его обратно
C++
1
2
for (int i=0; i<n; i++)
    fprintf(f, "%i %s %i\n", a[i].Nr,a[i].Name,a[i].Date);
anton88-2006
0 / 0 / 0
Регистрация: 24.01.2011
Сообщений: 5
26.01.2011, 22:02  [ТС]     удаление списка в с++ #5
спасибо за ответ)
только у меня появилась неожиданная проблемка.
задумка в данный момент такова, что моя программка состоит из нескольких маленьких программ. Только вот они не хотят запускаться, вот программа
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
#include "stdafx.h"
#include <stdio.h>
#include <string.h>
int Zahl;
 
struct area
{
    char Warenbezeichnung[100];
    int Teilenummer, Anzahl, Speicherort; 
}; 
int _tmain(int argc, _TCHAR* argv[])
{
    
    printf("Guten Tag!\n Um Programm zu bedienen mГјssen sie nur jeweilige Ziffer drГјcken.\n Neue Liste hinzufГјgen drГјcken sie <1> ");
    scanf ("%i",&Zahl);
    switch (Zahl)
    {
    case 1: void WareHinzufГјgen(); break;
            
    }
    
    return (0);
}
void WareHinzufГјgen()
{
    FILE*Liste;
    char DateiName[256];
    area Feld[50];
 
    printf("DateiName angeben > ");
    scanf("%s",DateiName);
    
    do
    {
        Liste=fopen("Liste.txt","r+");
        area Nr;
        printf("Warenbezeichnung:  ");
        scanf("%s",Nr.Warenbezeichnung);
        printf("Teilenummer");
        scanf("%i",Nr.Teilenummer);
        printf("Anzahl");
        scanf("%i",Nr.Anzahl);
        fprintf(Liste,"%s %i %i",Nr.Warenbezeichnung,Nr.Teilenummer,Nr.Anzahl);
        fclose(Liste);
 
    } while(1);
 
 
}
после нажатия "1" прога молниеносно закрывается, почему?
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
27.01.2011, 07:02     удаление списка в с++ #6
C
1
scanf("%i",Nr.Teilenummer);
C
1
scanf("%i", &Nr.Teilenummer);
и так далее

файл не нужно в цикле открывать
D@rkD@iver
110 / 110 / 3
Регистрация: 01.10.2008
Сообщений: 876
27.01.2011, 07:58     удаление списка в с++ #7
anton88-2006,
char Zahl;
C++
1
2
3
4
5
6
 scanf ("%c",&Zahl);
        switch (Zahl)
        {
        case '1': void WareHinzufьgen(); break;
                        
        }
NiRamz
209 / 209 / 16
Регистрация: 26.12.2010
Сообщений: 691
27.01.2011, 08:07     удаление списка в с++ #8
Цитата Сообщение от anton88-2006 Посмотреть сообщение
WareHinzufьgen()
Цитата Сообщение от anton88-2006 Посмотреть сообщение
WareHinzufьgen

Не по теме:

там мягкий знак или B?)

accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
27.01.2011, 08:25     удаление списка в с++ #9
насчёт int Zahl; там и так работает
anton88-2006
0 / 0 / 0
Регистрация: 24.01.2011
Сообщений: 5
29.01.2011, 20:31  [ТС]     удаление списка в с++ #10
спасибо с этой проблемой разобрался)
только в данный момент возник новый вопрос.
после того как я через консоль задал и сохранил текст, консоль должна его обратно считать на экран. У меня почему то считывает только последние строчки, в чем может быть проблема?
Код
void Listeherauslesen()
{	
	FILE*Liste;
	
	char DateiName[256];
	Item Feld[50];
	printf("DateiName angeben > ");
	scanf("%s",DateiName);
	Liste=fopen(DateiName,"r");
	Item Nr;
	int a=1; 
	while (EOF!= fscanf(Liste,"%s %d %d",Feld[a].Warenbezeichnung,&Feld[a].Teilenummer,&Feld[a].Anzahl));
	{	

		printf("\n%s                 %d              %d\n\n",Feld[a].Warenbezeichnung,Feld[a].Teilenummer,Feld[a].Anzahl);
		a=a+1;
	}
	
	
	fclose(Liste);
	printf(" \n");
	scanf("%d",b);
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
30.01.2011, 06:54     удаление списка в с++ #11
C++
1
int a=1;
надо с нуля начинать

Цитата Сообщение от anton88-2006
У меня почему то считывает только последние строчки
надо открыть файл после сохранение и посмотреть содержимое
anton88-2006
0 / 0 / 0
Регистрация: 24.01.2011
Сообщений: 5
30.01.2011, 13:58  [ТС]     удаление списка в с++ #12
Цитата Сообщение от accept Посмотреть сообщение
C++
1
int a=1;
надо с нуля начинать


надо открыть файл после сохранение и посмотреть содержимое
"а" назначил с нуля. Получаю все ровно последнюю строчку.
Файл смотрел, сохраняется нормально. Там строчек 10. Пробовал в файле последнюю сроку изменить, на консоль выводится уже измененная строка из файла. Так что прога явно считывает с файла, только последнюю строку(
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.01.2011, 05:58     удаление списка в с++
Еще ссылки по теме:

Удаление из списка C++
C++ Удаление из списка
Удаление элементов из односвязного списка списка C++

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

Или воспользуйтесь поиском по форуму:
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
31.01.2011, 05:58     удаление списка в с++ #13
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
    for (int a = 0; a < 50; a++) {
        int retval = fscanf(
            Liste,
            "%s%d%d",
            Feld[a].Warenbezeichnung,
            &Feld[a].Teilenummer,
            &Feld[a].Anzahl
        );
        if (retval != 3) {
            printf("error\n");
            break;
        }
        printf(
            "\n"
            "%s                 "
            "%d              "
            "%d"
            "\n\n",
            Feld[a].Warenbezeichnung,
            Feld[a].Teilenummer,
            Feld[a].Anzahl
        );
    }
Yandex
Объявления
31.01.2011, 05:58     удаление списка в с++
Ответ Создать тему
Опции темы

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