Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [C] Файловый ввод/вывод


Автор: 50c0nt 9.1.2007, 14:28
хуйпизда

Автор: Xenon 9.1.2007, 18:41
У структуры "сротсмен" поля "количество игроков"??? Что за хрень? smile
А вообще чего нужно сделать? Писать/считывать структруы указанного типа в бинарном режиме?

Автор: RjuRik 9.1.2007, 19:05
Там надо что-то наподобие такого сделать

Код

#include <stdio.h>
#include <string.h>
struct  KOMAHDA
{
char HA3BAHuE[20];
char rOPOD[20];
int KOJIu4ECTBO_urPOKOB;
int KOJIu4ECTBO_HA6PAHHbIX_O4KOB;
};
main()
{
KOMAHDA list[30];
int action=0, last=0;
while (action!=4)
{
printf ("choose 1-add, 2-print,3-delete,4-exit\n");
scanf("%d", &action);
if (action==1)
{
printf ("enter HA3BAHuE, rOPOD, KOJIu4ECTBO_urPOKOB, KOJIu4ECTBO_HA6PAHHbIX_O4KOB\n");
scanf("%s", &list[last].HA3BAHuE);
scanf("%s", &list[last].rOPOD);
scanf("%d", &list[last].KOJIu4ECTBO_urPOKOB);
scanf("%d", &list[last].KOJIu4ECTBO_HA6PAHHbIX_O4KOB);
last++;
}
else if (action==2)
{
for (int i=0; i<last; i++)
printf ("HA3BAHuE-%s, rOPOD-%s, KOJIu4ECTBO_urPOKOB-%d, KOJIu4ECTBO_HA6PAHHbIX_O4KOB-%d \n" ,list[i].HA3BAHuE,list[i].rOPOD, list[i].KOJIu4ECTBO_urPOKOB,list[i].KOJIu4ECTBO_HA6PAHHbIX_O4KOB);
}

else if (action==3)
{
for (int i=0; i<last; i++)
printf ("HA3BAHuE-%s, rOPOD-%s, KOJIu4ECTBO_urPOKOB-%d, KOJIu4ECTBO_HA6PAHHbIX_O4KOB-%d \n",list[i].HA3BAHuE,list[i].rOPOD, list[i].KOJIu4ECTBO_urPOKOB,list[i].KOJIu4ECTBO_HA6PAHHbIX_O4KOB);
}
}
return 0;
}



Но тут только вводится название и город, чилсо игроков и набранных очков. Как дальше делать я не понимаю. 3-delete там не работает, но он там в принцапе и не нужен.


M
Alexeis
Модератор: указывайте тип подсветки http://forum.vingrad.ru/index.php?showtopic=126445

Автор: Xenon 9.1.2007, 19:47
RjuRik, а какой delete, если массив структур создается в стеке? Если бы ты динамически создавал
Код

KOMANDA* list[20];
//А теперь добавлял бы, типа
list[0]=new KOMANDA;
list[1]=new KOMANDA;
//и т.д.


Тогда, надо было бы убивать каждую команду при помощи delete, так как они бы хранились в куче. Если бы массив указателей создал бы в куче, то и его надо было убивать руками при помощи delete [] list;

Автор: RjuRik 9.1.2007, 20:26
Там он вообще не нужен. Надо все данные, которые вводятся, в файл поместить, но я не знаю как.

Автор: Xenon 9.1.2007, 21:25
RjuRik, ну просто ты сказал, что он не работает - я ответил почему smile
А писать тут потоками надо. Как в С++ могу сказать

Автор: RjuRik 11.1.2007, 00:39
Вот почти давёл до эдиала на мой взгляд  smile 
Код

#include <stdio.h>
#include <string.h>
struct KOMAHDA
{
char HA3BAHuE[100];
char rOPOD[100];
int KOJIu4ECTBO_urPOKOB;
int KOJIu4ECTBO_HA6PAHHbIX_O4KOB;
};
main()
{
int t;
printf ("3ADAuTE_KOJIu4ECTBO_O4KOB - ");
scanf ("%d", &t);
KOMAHDA list[100];
int action=0, last=0;
while (action!=3)
{
printf ("HA)I(MuTE:\n1. nPODOJI)I(uTb\n2. PACnE4ATATb\n3. BbIXOD\n");
scanf("%d", &action);
if (action==1)
{
printf ("BBEDuTE: HA3BAHuE, rOPOD, KOJIu4ECTBO_urPOKOB, KOJIu4ECTBO_HA6PAHHbIX_O4KOB;\n");
scanf("%s", &list[last].HA3BAHuE);
scanf("%s", &list[last].rOPOD);
scanf("%d", &list[last].KOJIu4ECTBO_urPOKOB);
scanf("%d", &list[last].KOJIu4ECTBO_HA6PAHHbIX_O4KOB);
last++;
}
else if (action==2)
{
for (int i=0; i<last; i++)
for (list[i].KOJIu4ECTBO_HA6PAHHbIX_O4KOB; list[i].KOJIu4ECTBO_HA6PAHHbIX_O4KOB>=t; list[i].KOJIu4ECTBO_HA6PAHHbIX_O4KOB=t-1)
{
printf ("HA3BAHuE - %s\nrOPOD - %s\nKOJIu4ECTBO_urPOKOB - %d\nKOJIu4ECTBO_HA6PAHHbIX_O4KOB - %d\n", list[i].HA3BAHuE,list[i].rOPOD,  list[i].KOJIu4ECTBO_urPOKOB, list[i].KOJIu4ECTBO_HA6PAHHbIX_O4KOB);
printf ("\n");
}
}
}
return 0;
}

Но до сих пор не могу понять, как создать файл в который будет записываться то, что выводится после нажатия на 2.  

Автор: Alexeis 11.1.2007, 14:15
Модератор: RjuRik, думаю стоит еще раз прочитать http://forum.vingrad.ru/index.php?showtopic=126445 а затем исправить свой пост.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)