Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <fcntl.h> // for open()
- #include <errno.h> // for perror()
- #include <sys/types.h>
- #include <sys/stat.h>
- #include <string.h> //for strcpy()
- #include <unistd.h> //for file write()
- #include <time.h>
- struct Kivansag {
- char date[100];
- char name[100];
- char city[100];
- char address[100];
- char gift[100];
- };
- const char *FILE_NAME = "kivansagok.scv";
- int list_size = 0;
- struct Kivansag gifts[1000];
- void cutEnter(char string[100]);
- int isCorrect(char *answer);
- struct Kivansag rowToKivansag(char row[1000]);
- char* kivansagToRow(struct Kivansag kivansag);
- void case1();
- void case2();
- void case3();
- void case4();
- char *swapSpace(char *row);
- void mainMenu();
- int main(){ //23
- FILE *fileContents;
- if((fileContents= fopen(FILE_NAME, "rb")) == NULL){
- if(errno == ENOENT){//if "kivansagok" file doesn't exists
- printf("A file megnem letezik! Letrehozas...\n");
- fileContents = fopen(FILE_NAME,"wb");
- fprintf(fileContents, "%d\n",list_size);
- fclose(fileContents);
- mainMenu();
- }else{
- printf("Valami nagy hiba tortent! \n");
- exit(1);
- }
- }else{
- fscanf(fileContents,"%d\n",&list_size);
- if(list_size > 0){
- int i;
- for(i = 0; i < list_size; i++){
- struct Kivansag kivansag;
- char row[1000];
- fscanf(fileContents,"%s",row);
- kivansag = rowToKivansag(row);
- gifts[i] = kivansag;
- }
- }
- fclose(fileContents);
- mainMenu();
- }
- return 0;
- }//30
- void mainMenu(){
- char answer[10];
- int check = 0;
- do{
- printf("\n*********************************************************\n");
- printf("Udv a Mikulas kivansag kezelojen! Az alabbiak kozul valaszthat:\n"
- " (1) Uj kivansag felvete (Regit felulirja ! )\n"
- " (2) Kivansagok listazasa\n"
- " (3) Szures adott varosra\n"
- " (4) Szures adott ajandekra\n"
- " (5) Kilepes\n");
- fgets(answer,10, stdin);
- check = isCorrect(answer);
- if(check < 1 || check > 5){
- printf("\nHibas adatbevitel!\n");
- }else{
- if(check == 1){
- case1();
- }
- if(check == 2){
- case2();
- }
- if(check == 3){
- case3();
- }
- if(check == 4){
- case4();
- }
- }
- }
- while(check != 5);
- }
- void case4(){
- char answer[100];
- printf("Adja meg a listazando ajandek nevet!\n");
- fgets(answer, 100, stdin);
- cutEnter(answer);
- struct Kivansag subList[1000];
- int count = 0;
- int i;
- for(i = 0; i < list_size; i++){
- if(strcmp(gifts[i].gift,answer) == 0){
- subList[count] = gifts[i];
- ++count;
- }
- }
- if(count > 0){
- printf("\n");
- for(i = 0; i < count; i++){
- printf("Datum: %s Nev: %s Varos: %s Pontos cim: %s Ajandek: %s\n",subList[i].date,subList[i].name,subList[i].city,subList[i].address,subList[i].gift);
- }
- printf("Szurt listaelemek szama: %d\n",count);
- }else{
- printf("Nem talaltam ilyen ajandekot!\n");
- }
- }
- void case3(){
- char answer[100];
- printf("Adja meg a listazando varos nevet!\n");
- fgets(answer, 100, stdin);
- cutEnter(answer);
- struct Kivansag subList[1000];
- int count = 0;
- int i;
- for(i = 0; i < list_size; i++){
- if(strcmp(gifts[i].city,answer) == 0){
- subList[count] = gifts[i];
- ++count;
- }
- }
- if(count > 0){
- printf("\n");
- for(i = 0; i < count; i++){
- printf("Datum: %s Nev: %s Varos: %s Pontos cim: %s Ajandek: %s\n",subList[i].date,subList[i].name,subList[i].city,subList[i].address,subList[i].gift);
- }
- printf("Szurt listaelemek szama: %d\n",count);
- }else{
- printf("Nem talaltam ilyen varost!\n");
- }
- }
- void case2(){
- FILE *list = fopen(FILE_NAME, "rb");
- struct Kivansag kivansag;
- fscanf(list,"%d\n",&list_size);
- if(list_size > 0){
- int i;
- char row[1000];
- for(i = 0; i < list_size; i++){
- fscanf(list,"%s",row);
- kivansag = rowToKivansag(row);
- printf("Datum: %s Nev: %s Varos: %s Pontos cim: %s Ajandek: %s\n",kivansag.date,kivansag.name,kivansag.city,kivansag.address,kivansag.gift);
- }
- printf("\n");
- printf("Listaelemek szama: %d\n",list_size);
- }else{
- printf("Meg nincsenek lista elemek!\n");
- }
- fclose(list);
- }
- void case1(){
- FILE *list;
- time_t now;
- struct tm *ts;
- char buf[100];
- //current time
- now = time(NULL);
- //Format and print the time, "ddd yyyy-mm-dd hh:mm:ss zzz" */
- ts = localtime(&now);
- strftime(buf, sizeof(buf), "%Y-%m-%d_%H:%M:%S_(%a)", ts);
- int volt_e = 0;
- int position = 0;
- char row[1000];
- struct Kivansag kivansag;
- //strcpy(kivansag.date,buf);
- strcpy(kivansag.date,buf);
- strcpy(row,buf); //datum
- strcat(row,",");
- printf("Kerem adja meg a nevet!\n");
- fgets(kivansag.name,100,stdin);
- cutEnter(kivansag.name);
- strcat(row,kivansag.name);
- strcat(row,",");
- int i;
- for(i = 0; i < list_size; i++){
- if(strcmp(kivansag.name,gifts[i].name)==0){
- volt_e = 1;
- position = i;
- }
- }
- printf("Kerem adja meg a varosat!\n");
- fgets(kivansag.city,sizeof(kivansag.city),stdin);
- cutEnter(kivansag.city);
- strcat(row,kivansag.city);
- strcat(row,",");
- printf("Kerem adja meg a pontos cimet!\n");
- fgets(kivansag.address,sizeof(kivansag.address),stdin);
- cutEnter(kivansag.address);
- strcat(row,kivansag.address);
- strcat(row,",");
- char choice[10];
- printf("Kerem valasszon ajandekot!\n"
- " (1) baba\n"
- " (2) auto\n"
- " (3) labda\n"
- " (4) kirako\n"
- " (5) szinezo\n"
- " (6) konyv\n");
- fgets(choice, 10, stdin);
- int result = isCorrect(choice);
- while(result < 1 || result > 6){
- printf("Kerem valasszon ajandekot!\n"
- " (1) baba\n"
- " (2) auto\n"
- " (3) labda\n"
- " (4) kirako\n"
- " (5) szinezo\n"
- " (6) konyv\n"
- );
- fgets(choice, 10, stdin);
- result = isCorrect(choice);
- }
- switch(result){
- case 1:
- strcpy(kivansag.gift,"baba");
- strcat(row,kivansag.gift);
- strcat(row,"\n");
- break;
- case 2:
- strcpy(kivansag.gift,"auto");
- strcat(row,kivansag.gift);
- strcat(row,"\n");
- break;
- case 3:
- strcpy(kivansag.gift,"labda");
- strcat(row,kivansag.gift);
- strcat(row,"\n");
- break;
- case 4:
- strcpy(kivansag.gift,"kirako");
- strcat(row,kivansag.gift);
- strcat(row,"\n");
- break;
- case 5:
- strcpy(kivansag.gift,"szinezo");
- strcat(row,kivansag.gift);
- strcat(row,"\n");
- break;
- case 6:
- strcpy(kivansag.gift,"konyv");
- strcat(row,kivansag.gift);
- strcat(row,"\n");
- break;
- default:
- printf("\nvalami hiba lesz itt\n");
- strcat(row,kivansag.gift);
- strcat(row,"\n");
- break;
- }
- if(volt_e == 1){
- gifts[position]= kivansag;
- list = fopen(FILE_NAME, "wb");
- fprintf(list, "%d\n", list_size);
- int i;
- char *oldRows;
- for(i = 0; i < list_size; i++){
- oldRows = kivansagToRow(gifts[i]);
- oldRows = swapSpace(oldRows);
- fprintf(list, "%s",oldRows);
- }
- fclose(list);
- }else{
- ++list_size;
- gifts[list_size-1] = kivansag;
- list = fopen(FILE_NAME, "wb");
- fprintf(list, "%d\n",list_size);
- int i;
- char *oldRows;
- for(i = 0; i < list_size; i++){
- oldRows = kivansagToRow(gifts[i]);
- oldRows = swapSpace(oldRows);
- fprintf(list, "%s",oldRows);
- }
- fclose(list);
- }
- }
- char *kivansagToRow(struct Kivansag kivansag){
- char *row;
- row = kivansag.date;
- strcat(row,",");
- strcat(row,kivansag.name);
- strcat(row,",");
- strcat(row,kivansag.city);
- strcat(row,",");
- strcat(row,kivansag.address);
- strcat(row,",");
- strcat(row,kivansag.gift);
- strcat(row,"\n");
- return row;
- }
- struct Kivansag rowToKivansag(char row[1000]){
- struct Kivansag kivansag;
- int i = 0;
- int j = 0;
- int count = 0;
- int lastPos = 0;
- while(row[i] != '\0'){
- if(row[i] == ','){
- ++count;
- lastPos = j;
- j = 0;
- }else{
- if(count == 0){
- if(row[i] == '_'){
- kivansag.date[j] = ' ';
- }
- else{
- kivansag.date[j] = row[i];
- }
- ++j;
- }
- if(count == 1){
- kivansag.date[lastPos] = '\0';
- if(row[i] == '_'){
- kivansag.name[j] = ' ';
- }
- else{
- kivansag.name[j] = row[i];
- }
- ++j;
- }
- if(count == 2){
- kivansag.name[lastPos] = '\0';
- if(row[i] == '_'){
- kivansag.city[j] = ' ';
- }
- else{
- kivansag.city[j] = row[i];
- }
- ++j;
- }
- if(count == 3){
- kivansag.city[lastPos] = '\0';
- if(row[i] == '_'){
- kivansag.address[j] = ' ';
- }
- else{
- kivansag.address[j] = row[i];
- }
- ++j;
- }
- if(count == 4){
- kivansag.address[lastPos] = '\0';
- if(row[i] == '_'){
- kivansag.gift[j] = ' ';
- }
- else{
- kivansag.gift[j] = row[i];
- }
- ++j;
- }
- }
- ++i;
- }
- kivansag.gift[j] = '\0';
- return kivansag;
- }
- int isCorrect(char answer[10]){
- return *answer-48;
- }
- char *swapSpace(char *row){
- int count = 0;
- while(*row != '\0'){
- ++count;
- if(*row == ' '){
- *row = '_';
- }
- ++row;
- }
- int i;
- for(i = 0; i < count; i++){
- --row;
- }
- return row;
- }
- void cutEnter(char string[100]){
- char *pos;
- if ((pos=strchr(string, '\n')) != NULL)
- *pos = '\0';
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement