#include #include #include #define DELKA_RADKU 1000 #define DELKA_POPISU 100 #define POCET_ODPISOVYCH_SKUPIN 6 #define POCET_SLOUPCU 9 #define VSTUP "odpisy.txt" #define VYSTUP "vystup.txt" #define SEPARATORY ";\t\n" typedef struct { int roky; char priklad[DELKA_POPISU]; float sazba_prvni, sazba_dalsi, sazba_zvysena; int koef_prvni, koef_dalsi, koef_zvysena; } ODPISOVA_SKUPINA; void nacti_a_zapis_nadpisy(FILE *fr, FILE *fw, char s[], char nadpis[][DELKA_POPISU]) { int i = 0; char *p_znak; if (fgets(s, DELKA_RADKU, fr)); fprintf(fw, "%s", s); p_znak = strtok(s, SEPARATORY); if (p_znak != NULL) { strcpy(nadpis[i], p_znak); fprintf(fw, "%s\n", nadpis[i]); } while ((p_znak = strtok(NULL, SEPARATORY)) != NULL) { i++; strcpy(nadpis[i], p_znak); fprintf(fw, "%s\n", nadpis[i]); } } void nacti_a_zapis_strukturu(FILE *fr, FILE *fw, char s[], ODPISOVA_SKUPINA struktura[]) { char *p_znak; int cislo, i = 0; while (fgets(s, DELKA_RADKU, fr) != NULL) { p_znak = strtok(s, SEPARATORY); if (p_znak != NULL) { sscanf(p_znak, "%d", &cislo); } p_znak = strtok(NULL, SEPARATORY); if (p_znak != NULL) { sscanf(p_znak, "%d", &struktura[i].roky); } p_znak = strtok(NULL, SEPARATORY); if (p_znak != NULL) { strcpy(struktura[i].priklad, p_znak); // sscanf(p_znak, "%s", struktura[i].priklad); } p_znak = strtok(NULL, SEPARATORY); if (p_znak != NULL) { sscanf(p_znak, "%f", &struktura[i].sazba_prvni); } p_znak = strtok(NULL, SEPARATORY); if (p_znak != NULL) { sscanf(p_znak, "%f", &struktura[i].sazba_dalsi); } p_znak = strtok(NULL, SEPARATORY); if (p_znak != NULL) { sscanf(p_znak, "%f", &struktura[i].sazba_zvysena); } p_znak = strtok(NULL, SEPARATORY); if (p_znak != NULL) { sscanf(p_znak, "%d", &struktura[i].koef_prvni); } p_znak = strtok(NULL, SEPARATORY); if (p_znak != NULL) { sscanf(p_znak, "%d", &struktura[i].koef_dalsi); } p_znak = strtok(NULL, SEPARATORY); if (p_znak != NULL) { sscanf(p_znak, "%d", &struktura[i].koef_zvysena); } i++; } cislo = i; for (i = 0; i < cislo; i++) { fprintf(fw, "%d\t", i + 1); fprintf(fw, "%d\t", struktura[i].roky); fprintf(fw, "%s\t", struktura[i].priklad); fprintf(fw, "%f\t", struktura[i].sazba_prvni); fprintf(fw, "%f\t", struktura[i].sazba_dalsi); fprintf(fw, "%f\t", struktura[i].sazba_zvysena); fprintf(fw, "%d\t", struktura[i].koef_prvni); fprintf(fw, "%d\t", struktura[i].koef_dalsi); fprintf(fw, "%d\n", struktura[i].koef_zvysena); } } void nacti_a_zapis_strukturu2(FILE *fr, FILE *fw, char s[], ODPISOVA_SKUPINA *struktura) { ODPISOVA_SKUPINA *p_odpisova_skupina = struktura; char *p_znak; int cislo, i = 0; while (fgets(s, DELKA_RADKU, fr)) { p_znak = strtok(s, SEPARATORY); if (p_znak != NULL) { sscanf(p_znak, "%d", &cislo); } p_znak = strtok(NULL, SEPARATORY); if (p_znak != NULL) { sscanf(p_znak, "%d", &(struktura + i)->roky); } p_znak = strtok(NULL, SEPARATORY); if (p_znak != NULL) { strcpy((struktura + i)->priklad, p_znak); } p_znak = strtok(NULL, SEPARATORY); if (p_znak != NULL) { sscanf(p_znak, "%f", &(struktura + i)->sazba_prvni); } p_znak = strtok(NULL, SEPARATORY); if (p_znak != NULL) { sscanf(p_znak, "%f", &(struktura + i)->sazba_dalsi); } p_znak = strtok(NULL, SEPARATORY); if (p_znak != NULL) { sscanf(p_znak, "%f", &(struktura + i)->sazba_zvysena); } p_znak = strtok(NULL, SEPARATORY); if (p_znak != NULL) { sscanf(p_znak, "%d", &(struktura + i)->koef_prvni); } p_znak = strtok(NULL, SEPARATORY); if (p_znak != NULL) { sscanf(p_znak, "%d", &(struktura + i)->koef_dalsi); } p_znak = strtok(NULL, SEPARATORY); if (p_znak != NULL) { sscanf(p_znak, "%d", &(struktura + i)->koef_zvysena); } i++; } for (i = 0; i < POCET_ODPISOVYCH_SKUPIN; i++, p_odpisova_skupina++) { fprintf(fw, "%d\t", i + 1); fprintf(fw, "%d\t", p_odpisova_skupina->roky); fprintf(fw, "%s\t", p_odpisova_skupina->priklad); fprintf(fw, "%f\t", (struktura + i)->sazba_prvni); // alternativne fprintf(fw, "%f\t", p_odpisova_skupina->sazba_dalsi); fprintf(fw, "%f\t", p_odpisova_skupina->sazba_zvysena); fprintf(fw, "%d\t", p_odpisova_skupina->koef_prvni); fprintf(fw, "%d\t", p_odpisova_skupina->koef_dalsi); fprintf(fw, "%d\n", p_odpisova_skupina->koef_zvysena); } } int main() { FILE *fr, *fw; char nadpis[POCET_SLOUPCU][DELKA_POPISU]; char radek[DELKA_RADKU]; ODPISOVA_SKUPINA odpisove_skupiny[POCET_ODPISOVYCH_SKUPIN]; if ((fr = fopen(VSTUP, "r")) == NULL) { printf("Soubor %s se nepodarilo otevrit.\n", VSTUP); return 1; } if ((fw = fopen(VYSTUP, "w")) == NULL) { printf("Soubor %s se nepodarilo otevrit.\n", VYSTUP); return 1; } nacti_a_zapis_nadpisy(fr, fw, radek, nadpis); nacti_a_zapis_strukturu(fr, fw, radek, odpisove_skupiny); printf("Hello world!\n"); if (fclose(fw) == EOF) { printf("Soubor %s se nepodarilo uzavrit.\n", VYSTUP); return 1; } if (fclose(fr) == EOF) { printf("Soubor %s se nepodarilo uzavrit.\n", VSTUP); return 1; } return 0; }