Creative Commons License Foxbond's Repo

/** (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