Zdravim,
potřeboval bych pomoct s indexováním prvků při vkládání do spojového seznamu.
A pak ještě pomoct s rozběhem jednotlivých modulů v C.
tady jsou zdrojáky pro indexování při vkládání parametrů:
#ifndef FUNKCE_H
#define FUNKCE_H
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <malloc.h>
#include <string.h>
#include "katalog.h"
#define CESTA "/home/teodor/Plocha/Parametry_exoplanet.txt" // definovana cesta ke ctenemu souboru
#define ROZSAH 100 // Staticka makro konstanta pro velikost nazvu parametru
#define ROZSAH_RADKY 300 // Staticka makro konstat pro velikost radky
void menu(); // Prototyp fce pro menu
void smaz_katalog(KATALOG **pps); // Prototyp fce pro smazani katalogu
void smaz_soubor(); // Prototyp fce pro smazani souboru
void vkladani_parametru(KATALOG **pps, char *parametr_1, long int parametr_2, long int parametr_3, long int parametr_4, int index); // Prototyp fce pro vkladani parametru exoplanet
void hledani_parametru(const KATALOG *pps, int index); // Prototyp fce pro mazani jednotlivych parametru
int zapis_do_souboru(char *parametr_1, long int parametr_2, long int parametr_3, long int parametr_4); // Prototyp fce pro ukladani do souboru
int cteni_ze_souboru(); // Prototyp fce pro cteni ze souboru
#endif
#ifndef KATALOG_H
#define KATALOG_H
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <malloc.h>
#include <string.h>
#include "funkce.h"
#define ROZSAH_NAZVU 100
typedef struct katalog { // Struktura prvku
char nazev[ROZSAH_NAZVU]; // Prvek nazvu exoplanety
int hmotnost; // Prvek hmotnosti exoplanety
int jasnost; // Prvek jasnosti exoplanety
int radial_rychlost; // Prvek radialni rychlosti exoplanety
struct katalog *nasledujici; // Pointer struktury katalog na nasledujici prvek
} KATALOG;
#endif
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <malloc.h>
#include <string.h>
#include "funkce.h"
#include "katalog.h"
void vkladani_parametru(KATALOG **pps, char *parametr_1,long int parametr_2, long int parametr_3, long int parametr_4, int index) {
KATALOG *ps; // Pointer na strukturu katalog
int idx = 0; // pomocna promenna k porovnavani indexu od 0
if(idx == index) { // Porovnani parametru s hodnotou indexu
ps = (KATALOG *) malloc(sizeof(KATALOG)); // Osetreni dynamickeho prideleni pameti
if(ps == NULL) {
fputs("Chybna alokace pameti!\n", stderr); // Pokud se neprideli pamet, vypise se chybove hlaseni
// a na chybovy vystup stderr
return;
}
if(ps) {
// Vsechny parametry exoplanety budou mit stejny index pro hledani
strcpy(ps->nazev, parametr_1); // Pridani prvku do spoj. seznamu
ps->nasledujici; // Posun na dalsi prvek v rade
ps->hmotnost = parametr_2; // -//-
ps->nasledujici;
ps->jasnost = parametr_3;
ps->nasledujici;
ps->radial_rychlost = parametr_4 ;
// ps->nasledujici = NULL; // Ukazuje na konec seznamu
*pps = ps;
}
}
};
K té modulárnosti...mám implementaci jednotlivých fcí v .c souborech, třeba cteni_ze_souboru.c, v NetBenas se to přeloží, ale program nedělá to co má. Asi jsem někde něco neprovázal nebo nevim, ale když to udělám prasácky a výkonný kód nacpu do headers tak to běží tak jak má. Stejně když ty jednotlivé moduly kompiluji přes gcc -wall, přeloží se to, ale program nic nedělá.