Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #define VELIKOST 8000000
- #define MAX_POCET_LIDI 7
- typedef struct {
- int id;
- char jmeno[64], prijmeni[64], adresa[256], telefon[32];
- } tClovek;
- enum {
- ID, JMENO, PRIJMENI, ADRESA, TELEFON
- } radimeDle = TELEFON;
- int porovnejPolozky(const void *p1, const void *p2) {
- const tClovek * c1 = p1, *c2 = p2;
- switch (radimeDle) {
- case ID:
- return c1->id - c2->id;
- break;
- case JMENO:
- return strcmp(c1->jmeno, c2->jmeno);
- break;
- case PRIJMENI:
- return strcmp(c1->prijmeni, c2->prijmeni);
- break;
- case ADRESA:
- return strcmp(c1->adresa, c2->adresa);
- break;
- case TELEFON:
- return strcmp(c1->telefon, c2->telefon);
- break;
- }
- return 0;
- }
- int main(int argc, char *argv[]) {
- /* tClovek pole[] = { // priklad pole - tohle neopisujte!!!
- { 0, "Frantisek", "Dobrota", "Blizka 23, 11100 Praha", "777666555444" },
- { 1, "Anna", "Peprna", "Daleka 1, Plzen", "606055444" },
- { 2, "Viliam", "Razny", "Hluboka 3", "257000111" },
- { 3, "Zdenek", "Pomaly", "Krizova 5", "800333444" },
- { 4, "Rene", "Drobny", "Vysehradska 3", "774888999" },
- { 5, "Brona","Chalupova", "Mladcova 4", "356222333" },
- { 6, "Cyril", "Metodej", "U Zahradek 123", "456321000" }
- };*/
- //ziskat data ze souboru do pole stuktur
- tClovek pole[MAX_POCET_LIDI];
- FILE *seznam= fopen("Dokument.txt","r");
- int pomocna= 0;
- int id;
- char jmeno[64];
- char prijmeni[64];
- char adresa[256];
- char telefon[32];
- int pocet_lidi=0;
- char pom[256];
- while (fgets(pom, 256, seznam) != NULL)
- {
- pomocna=sscanf(pom,"%d,%[^,],%[^,],%[^,],%[^,]", &id, jmeno,prijmeni,adresa,telefon);
- if(pomocna==5)
- {
- strcpy(pole[pocet_lidi].adresa,adresa);
- strcpy(pole[pocet_lidi].jmeno,jmeno);
- strcpy(pole[pocet_lidi].prijmeni,prijmeni);
- strcpy(pole[pocet_lidi].telefon,telefon);
- pole[pocet_lidi].id=id;
- pocet_lidi++;
- }
- }
- if (argc>1) //zpracujeme parametr prikazove radky
- switch (argv[1][0]) {
- case 'i': radimeDle = ID; break;
- case 'j': radimeDle = JMENO; break;
- case 'p': radimeDle = PRIJMENI; break;
- case 'a': radimeDle = ADRESA; break;
- case 't': radimeDle = TELEFON; break;
- default:
- printf("1. parametr prikazoveho je pismeno, ktere urcuje, podle ceho budeme radit\n"
- "i: dle ID, j: dle jmena, p: prijemni, a: adresy, t: telefonu\n");
- }
- qsort(pole, sizeof(pole)/sizeof(tClovek), sizeof(tClovek), porovnejPolozky); // razeni: qsort
- for (int i=0; i < pocet_lidi; i++) // vypis vysledku
- printf("%d; %s; %s; %s; %s\n", pole[i].id, pole[i].jmeno, pole[i].prijmeni, pole[i].adresa, pole[i].telefon);
- exit(EXIT_SUCCESS);
- getchar();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement