void make_pinaka(double ***pinaka, int grammes, int sthles)
{
int i,j;
double **temp; /*έβαλα αυτό*/
if (grammes>0 && sthles>0)
{
temp=(double **)malloc(sizeof(double)); /*έβαλα αυτό*/
for (i=0;i<grammes;i++)
{
*(temp+i)=(double *)malloc(sthles*sizeof(double)); /*έβαλα αυτό*/
}
}
else
{
printf("Dwsate lanthasmena dedomena - Dokimaste pali");
}
*pinaka=temp;
}
Λίγο που επιχείρησα να το τρέξω εκεί μου χτύπαγε segmentation fault.Για δες και έτσι και πες μου.
Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Έχετε κάποια ιδέα για το πώς να αντιμετωπίσω το segmentation fault. Μου το βγάζει για όλες μου τις συναρτήσεις... Help me plz
Πακέτο.
Γι αυτή την περίπτωση δεν μας δείχνεις κάποια συνάρτηση;
Μπορεί να επιχειρείς να κάνεις προσπέλαση κάπου που δεν επιτρέπεται.Για παραδειγμα να βγεις εκτός ορίων σε ενα array.
Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
gcc lib.c programma.c .
Δεν το ετρεξα γιατι ειναι πρωι και πρεπει να φύγω.Πάντως αυτός ειναι ο λόγος.
Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Επίσης πώς έκανες compile τα αρχεία σου;(εννοώ αν τα έκανες με κάποιο ide ή μέσω γραμμής εντολών; )
Αυτό συμβαίνει μάλλον γιατι τα αρχεία δεν γίνονται linked.
Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Για παράδειγμα, υλοποιείς ένα header (file.h) αρχείο με προτότυπα των συναρτήσεων σου και τις υλοποιείς στο .c αρχειο (file.c).
Στο file.c θα έχεις κανει include το file.h και θα υπάρχουν οι υλοποιήσεις των συναρτήσεων.
Στην συνάρτηση main που έχεις εκεί κάνεις include μόνο το file.h , αν κάνεις και το file.c προκύπτει το error που συνάντησες γιατί βρίσκει δύο φορές υλοποιημένες τις συναρτήσεις.
Και σε κώδικα για πιο κατανοητά
αρχείο file.h
/* file.h */
/*prototypes*/
void function1(arguments);
void function2(arguments);
.
.
/* file.c */
/*υλοποίηση συναρτήσεων*/
#include "file.h"
void function1(arguments){
/*body*/
return;
}
void function2(arguments){
/*body*/
return;
}
.
.
/* main function */
#include "file.h"
int main(void){
/*body*/
return 0;
}
/* main function */
/*πολλαπλή δήλωση συναρτήσεων*/
#include "file.h"
#include "file.c" /*προκαλεί error */
int main(void){
/*body*/
return 0;
}
Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Εναλλακτικά βάλε την system("PAUSE") αντί για scanf ,αλλά θα κάνεις include την <stdlib.h>
ή με τρίτο τρόπο κάνοντας χρήση breakpoints για τμηματική εκτέλεση του κώδικα.
Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Θα εχεις ενα header αρχειο με ονομα my_functions.h ,που περιεχει τα προτοτυπα των συναρτησεων, που θα εχει δομη
/*prototypa sunartisewn*/
int eswteriko_ginomeno(int *vector1 , int *vector2);
int e3wteriko_ginomeno(int *vector1 , int *vector2);
...
#include "my_functions.h"
int eswteriko_ginomeno(int *vector1 , int *vector2){
int eswteriko_ginomeno; /*metavliti apo8ikeysis apotelesmatos eswterikou ginomenou*/
/*function body*/
return eswteriko_ginomeno;
}
Ώρα να την θυμηθείςυγ: πάνε 4 χρόνια από τότε που πέρασα τη C...
Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Προσωρινες main μπορεις να δημιουργεις για να τεσταρεις τους κωδικες που γραφεις.
Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
-
Το forum μας χρησιμοποιεί cookies για να βελτιστοποιήσει την εμπειρία σας.
Συνεχίζοντας την περιήγησή σας, συναινείτε στη χρήση cookies στον περιηγητή σας.