Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    [C]Dove ho sbagliato?

    Non capisco non mi da errori di sintassi o cose del genere, ma appena faccio partire l'eseguibile mi dice che ha smesso di funzionare e si spegne...questo è il codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    typedef unsigned int boolean;
    #define false 0
    #define true 1
    struct list {
    int code;
    struct list *next_ptr;
    };
    struct project {
    char name[81];
    struct list *ptr;
    };

    void print_project(struct project *V, int N, int code) {
    int count;
    boolean found;
    found = false;
    while (found == false) {
    for (count = 0; count < N; count++) {
    if (V[count].ptr->code == code)
    found = true;
    }
    }
    if (found == true)
    printf("Il progetto si chiama %s", V[count].name);
    else
    printf("Lo studente con matricola %d non partecipa ad alcun progetto",
    code);
    }
    int main() {
    struct project V[10];

    strcpy(V[0].name, "Leonardo");
    V[0].ptr->code = 5269075;
    strcpy(V[1].name, "Galileo");
    V[1].ptr->code = 5254739;
    strcpy(V[2].name, "Giotto");
    V[2].ptr->code = 5125496;
    print_project(V,3,5254739);

    system("pause");
    return 1;
    }
    scusate il disturbo...ma non riesco a capire!

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,306
    Cosa fa questo

    V[0].ptr->code = 5269075;

    ?

    Ti faccio notare che il puntatore ptr non è valido ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    in teoria dovrebbe assegnare a code il valore 52...
    perchè ptr non è valido?

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,306
    Originariamente inviato da d1gu4k3r
    perchè ptr non è valido?
    Dove hai allocato lo spazio e assegnato ptr ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Giusto,scusa sono alle prime armi..
    per allocare dovrei fare una cosa tipo questa:
    A=(struct project*)malloc(3*sizeof(struct project)); ?
    ma cosa intendi con assegnare ptr?
    scusa la mia ignoranza...

  6. #6
    volevo dire...
    V=(struct project*)malloc(3*sizeof(struct project));

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,306

    Re: [C]Dove ho sbagliato?

    Devi allocare lo spazio per ogni puntatore ...

    codice:
    	strcpy(V[0].name, "Leonardo");
            V[0].ptr = (struct list *)malloc(sizeof(struct list));
    	V[0].ptr->code = 5269075;
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    Ok grazie mille ora non si blocca però invece di dirmi
    "Il progetto si chiama Leonardo"
    mi dice
    "Il progetto si chiama <N(e altri simboli strani)"...

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,306
    Hai scritto quella riga per ogni puntatore che hai usato ... vero ?

    Mostra il codice modificato ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  10. #10
    si ecco..

    int main() {
    struct project V[10];

    strcpy(V[0].name, "Leonardo");
    V[0].ptr = (struct list *) malloc(sizeof(struct list));
    V[0].ptr->code = 5269075;
    strcpy(V[1].name, "Galileo");
    V[1].ptr = (struct list *) malloc(sizeof(struct list));
    V[1].ptr->code = 5254739;
    strcpy(V[2].name, "Giotto");
    V[2].ptr = (struct list *) malloc(sizeof(struct list));
    V[2].ptr->code = 5125496;
    print_project(V, 3, 5269075);

    system("pause");
    return 1;
    }

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2020 vBulletin Solutions, Inc. All rights reserved.