Έφτιαξα το πρώτο μου επίσημο project σε C!
https://github.com/giwrg98/Comic-Organiser.gitΕπίσης τώρα προσπαθώ να φτιάξω ένα πρόγραμμα όπου κάποιος θα μπορεί να έχει κάτι σαν τράπεζα και να φτιάχνει λογιαριασμούς κλπ. Αλλά για κάποιο λόγο μου βγάζει seg fault.
trapeza.h:
- Κώδικας: Επιλογή όλων
#ifndef TRAPEZA_H
#define TRAPEZA_H
#define MAXNAME (120 + 1)
#define COMPARE_STR(STR1, STR2) (strcmp(lowercase_str(STR1), lowercase_str(STR2)))
int initialize(void);
int add_person(char *name, char *surname);
int print_person(char *query);
int give_money(int money);
int sub_money(int money);
char *lowercase_str(char *str);
typedef struct person {
char name[MAXNAME];
char surname[MAXNAME];
int money;
}Person;
#endif
trapeza.c:
- Κώδικας: Επιλογή όλων
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include "trapeza.h"
Person *array;
FILE *fp;
unsigned int person_count;
int add_person(char *name, char *surname) {
Person new_person;
fp = fopen("in.dat", "a+b");
strcpy(new_person.name, name);
strcpy(new_person.surname, surname);
new_person.money = 0;
fwrite(&new_person, sizeof(new_person), 1, fp);
rewind(fp);
fread(&person_count, sizeof(unsigned int), 1, fp);
person_count++;
rewind(fp);
fwrite(&person_count, sizeof(unsigned int), 1, fp);
array = (Person *) realloc(array, sizeof(array) + sizeof(new_person));
array[person_count - 1] = new_person;
fclose(fp);
return 0;
}
int initialize(void) {
fp = fopen("in.dat", "wb+");
person_count = 0;
fwrite(&person_count, sizeof(unsigned int), 1, fp);
fclose(fp);
return 0;
}
char *lowercase_str(char *str)
{
int i;
for(i = 0; str[i]; i++) {
str[i] = tolower(str[i]);
}
return str;
}
int search_person(char *query) {
int i;
for(i = 0; i < person_count; i++) {
if((COMPARE_STR(array[i].name, query) == 0) || (COMPARE_STR(array[i].surname, query) == 0))
return 1;
}
return 0;
}
int main(void) {
initialize();
add_person("Name", "Surname");
if(search_person("Surname")) {
printf("Success!\n");
}
return 0;
}
το σφάλμα είναι στη γραμμή 42 στη lowercase_str αν και την έχω ελέγξει και στο άλλο project :/