/** (c) 2015 Michał (Foxbond) Chraniuk */
#include <stdio.h>
#include <string.h>
void cls(void) { system("cls"); }
void error(char* msg){
cls();
printf("-------------------------------\n%s\n-------------------------------\n", msg);
getch();
exit(-1);
}
typedef struct elem{
char nazwisko[40];
char imie[40];
char pesel[20];//12
char nrDowodu[20];//13
struct elem *next;
}elem;
elem* db = NULL;
void addPerson(char* nazwisko, char* imie, char* pesel, char* nrDowodu) {
elem* newElem = (elem*)malloc(sizeof(elem));
strcpy(newElem->nazwisko, nazwisko);
strcpy(newElem->imie, imie);
strcpy(newElem->pesel, pesel);
strcpy(newElem->nrDowodu, nrDowodu);
newElem->next = NULL;
if (db == NULL) {
db = newElem;
return;
}
elem *p = db;
for (;;) {
if (p->next == NULL) {
p->next = newElem;
break;
}
p = p->next;
}
}
void sortNazwisko(){
if (db == NULL) return;
if (db->next == NULL) return;
elem *t = db;
for (;;) {
elem *p = db;
for (;;){
if (p->next == NULL) {
break;
}
if (strcmp(p->nazwisko, p->next->nazwisko) > 0){
//elem *temp = p;
/*
temp = obecny
obecny = nastepny
nastepny = temp
*/
}
p = p->next;
}
if (t->next == NULL) {
break;
}
t = t->next;
}
}
int main (){
FILE *dane = fopen("dane_f.txt", "r");
if (dane == NULL){
error("Nie mozna odczytac pliku, program zakonczy dzialanie!");
}
char buf[200];
while(fgets(buf, 200, dane)){
//printf("%s\n", buf);
char nazwisko[40];
char imie[40];
char pesel[20];
char nrDowodu[20];
sscanf(buf, "%s %s %s %s", &nazwisko, &imie, &pesel, &nrDowodu);
addPerson(nazwisko, imie, pesel, nrDowodu);
/*
char *temp = strtok(buf, " ");
while (*temp != NULL){
printf("%s\n", temp);
temp = strtok(NULL, " ");
}*/
}
sortNazwisko();
getch();
return 0;
}
> Back