Databaze v cecku, problem se souborem Vyřešeno
Napsal: 07 úno 2012 15:57
kdyz dam vypsat soubor, tak vypise jen prvni udaj, na danem radku jsem problem popsal konkretneji, dekuji za pomoc
#include <stdio.h>
#include <stdlib.h>
typedef struct {
char jmeno[20];
char prijmeni[20];
int plat;
}ZAMESTNANEC;
void pridat(void);
void vypsat(void);
int main()
{
int v,konec,a;
for(a=0;a!=5;){
printf("VYBER MOZNOST\n");
printf("Pridat zamestnance......1\nVypsat zamestnance......3\nKONEC...................4\n");
scanf("%d",&v);
switch(v){
case 1: pridat();
break;
case 2:
break;
case 3: vypsat();
break;
case 4: a=5;
break;
default: printf("neplatny prikaz\n");
}
}
printf("konec\n");
system("pause");
return 0;
}//konec main
void pridat(void)
{
ZAMESTNANEC lide[20];
int i,N;
printf("Kolik chces vytvorit zamestnancu?");
scanf("%d",&N);
for (i=0;i<N;i++){
printf("\n%d. zamestnanec\n",(i+1));
printf("Zadej jmeno: ");
scanf("%s",&lide[i].jmeno);
printf("Zadej prijmeni: ");
scanf("%s",&lide[i].prijmeni);
printf("Zadej plat: ");
scanf("%d",&lide[i].plat);
//ULOŽENÍ
int j;
FILE *soubor;
if((soubor = fopen("pokus", "wb")) == NULL)
{
printf("Soubor nelze otevrit.\n");
exit(1);
}
for(j=0; j<N; j++)
if(fwrite(&lide[j], sizeof(ZAMESTNANEC), 1, soubor) != 1)
{
printf("Chyba pri zapisu.\n");
exit(1);
}
fclose(soubor);
}
}
void vypsat(void)
{
ZAMESTNANEC lide[20];
int i,N,j, pocet;
FILE *soubor;
if((soubor = fopen("pokus", "rb")) == NULL)
{
printf("Soubor nelze otevrit.\n");
exit(1);
}
i=0; // TADY JE PROBLEM, AT ZADAM JAKEKOLI I, VZDY VYPISE JENOM PRVNI ZAZNAM, POTREBOVAL BYCH, ABY kdyz i=0, vypise prvni osobu, kdyz i=1; vypise druhou pridanou osobu, atd...
// vim ze jdu na to urcite spatne, ale nevim jak jinak to udelat, jestli je problem treba uz v zapisu nebo pri vypisu
fread(&lide[i],sizeof(ZAMESTNANEC),1,soubor); //nacitani ze souboru do databaze
{
printf("%s %s %d Kc\n",lide[i].jmeno,lide[i].prijmeni,lide[i].plat);
}
fclose(soubor);
}
#include <stdio.h>
#include <stdlib.h>
typedef struct {
char jmeno[20];
char prijmeni[20];
int plat;
}ZAMESTNANEC;
void pridat(void);
void vypsat(void);
int main()
{
int v,konec,a;
for(a=0;a!=5;){
printf("VYBER MOZNOST\n");
printf("Pridat zamestnance......1\nVypsat zamestnance......3\nKONEC...................4\n");
scanf("%d",&v);
switch(v){
case 1: pridat();
break;
case 2:
break;
case 3: vypsat();
break;
case 4: a=5;
break;
default: printf("neplatny prikaz\n");
}
}
printf("konec\n");
system("pause");
return 0;
}//konec main
void pridat(void)
{
ZAMESTNANEC lide[20];
int i,N;
printf("Kolik chces vytvorit zamestnancu?");
scanf("%d",&N);
for (i=0;i<N;i++){
printf("\n%d. zamestnanec\n",(i+1));
printf("Zadej jmeno: ");
scanf("%s",&lide[i].jmeno);
printf("Zadej prijmeni: ");
scanf("%s",&lide[i].prijmeni);
printf("Zadej plat: ");
scanf("%d",&lide[i].plat);
//ULOŽENÍ
int j;
FILE *soubor;
if((soubor = fopen("pokus", "wb")) == NULL)
{
printf("Soubor nelze otevrit.\n");
exit(1);
}
for(j=0; j<N; j++)
if(fwrite(&lide[j], sizeof(ZAMESTNANEC), 1, soubor) != 1)
{
printf("Chyba pri zapisu.\n");
exit(1);
}
fclose(soubor);
}
}
void vypsat(void)
{
ZAMESTNANEC lide[20];
int i,N,j, pocet;
FILE *soubor;
if((soubor = fopen("pokus", "rb")) == NULL)
{
printf("Soubor nelze otevrit.\n");
exit(1);
}
i=0; // TADY JE PROBLEM, AT ZADAM JAKEKOLI I, VZDY VYPISE JENOM PRVNI ZAZNAM, POTREBOVAL BYCH, ABY kdyz i=0, vypise prvni osobu, kdyz i=1; vypise druhou pridanou osobu, atd...
// vim ze jdu na to urcite spatne, ale nevim jak jinak to udelat, jestli je problem treba uz v zapisu nebo pri vypisu
fread(&lide[i],sizeof(ZAMESTNANEC),1,soubor); //nacitani ze souboru do databaze
{
printf("%s %s %d Kc\n",lide[i].jmeno,lide[i].prijmeni,lide[i].plat);
}
fclose(soubor);
}