Witam! Jestem w trakcie pisania bazy kontaktów, mam jednak pewien problem. Nie wiem jak wczytać numery telefonów z pliku do listy. Tutaj jeden kontakt może mieć ich kilka, ilość jest nieokreślona. Numery w pliku zapisuje po spacji, to jest największą trudnością, bo nie wiem jak całą linijkę podzielić na kilka części i każdą z osobna zapisać do innego elementu listy.
Na początek wstawiam typy bazowe:
struct contacts
{
int ID;
char name[32];
char surname[32];
char city[32];
char street[32];
char house_number[32];
char postal_code[7];
char post_office[32];
char email[32];
struct contacts *next;
};
struct nr_tel
{
int ID;
char number[10];
struct nr_tel *next;
};
Teraz funkcja wczytująca dane z pliku:
void load_file(struct contacts **list_pointer, struct nr_tel **phone_pointer){
int line_counter = -1;
int id;
FILE *load = NULL;
load = fopen("kontakty.txt", "r");
char buffer[32];
while (fscanf(load, "%s", buffer) != EOF){
id = get_next_id();
struct contacts * new_node = (struct contacts*)malloc(sizeof(struct contacts));
if(new_node){
line_counter++;
switch(line_counter){
case 0:
{
line_counter ++;
};
case 1: {
fscanf(load, "%s\n", buffer);
strcpy(new_node->name, buffer);
line_counter++;
};
case 2: {
fscanf(load, "%s\n", buffer);
strcpy(new_node->surname, buffer);
line_counter++;
};
case 3: {
fscanf(load, "%s\n", buffer);
strcpy(new_node->city, buffer);
line_counter++;
};
case 4: {
fscanf(load, "%s\n", buffer);
strcpy(new_node->street, buffer);
line_counter++;
};
case 5: {
fscanf(load, "%s\n", buffer);
strcpy(new_node->house_number, buffer);
line_counter++;
};
case 6: {
fscanf(load, "%s\n", buffer);
strcpy(new_node->postal_code, buffer);
line_counter++;
};
case 7: {
; // Numer telefonu;
};
case 8: {
; // mail
}
};
}
}
fclose(load);
}
Bardzo proszę o pomoc, każda wskazówka będzie cenna :)
Pozdrawiam!