Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    160

    [C] Problemi da principiante con le strutture....

    #include <stdio.h>

    struct prova
    {
    char nome;
    char cognome;
    };

    main(void)
    {
    struct prova *pointer;
    pointer->nome = 'x';
    pointer->cognome = 'y';
    printf("Nome: %c\n",pointer->nome);
    }
    ---

    Ottengo a video la stampa del valore di 'nome' però......

    Il primo problema che si pone: se non aggiungo una riga vuota in fondo al codice ottengo un messaggio come questo:
    "warning: no newline at end of file"
    Significa che un file .c deve necessariamente presentare una riga vuota successiva all'ultimo parola del codice?

    Secondo problema: in un altro esercizio che ho fatto (direi praticamente uguale, cambiano solo i nomi delle var) ottenevo sempre la stampa a video del valore di nome ma c'era anche una riga successiva che mi segnalava quanto segue:
    "segnale di annullamento"
    Che vuol dire??
    Ora non riesco a far ripresentare questo messaggio di errore ma mi incuriosisce il suo significato.

    Grazie

  2. #2
    Utente di HTML.it L'avatar di ChReAn
    Registrato dal
    Aug 2002
    Messaggi
    486
    Scusa ma che compilatore stai usando?

    La risposta alla prima domanda e' no, non serve nessuna riga vuota al termine del file per compilare.

    La risposta alla seconda... Mah. Cambia compilatore.
    ChReAn
    -------------------

    Slackware 9.1 powered

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    160
    ......ho detto cose proprio strane??

    Per compilare: gcc nomefile.c -o nomefile

    Per eseguire: ./nomefile per eseguirlo

  4. #4
    Utente di HTML.it L'avatar di ChReAn
    Registrato dal
    Aug 2002
    Messaggi
    486
    In effetti hai detto cose un po' strane... L'ho provato adesso con un vecchio gcc (2.91.66) e non ha dato problemi, anche togliendo la riga finale vuota (spostando con BACKSPACE il cursore subito dopo la graffa per intenderci).
    L'altro programma, quello che ti dava errore, com'era?
    E che errore ti dava di preciso?
    ChReAn
    -------------------

    Slackware 9.1 powered

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2001
    Messaggi
    167

    Re: [C] Problemi da principiante con le strutture....

    Originariamente inviato da Van Basten
    #include <stdio.h>

    struct prova
    {
    char nome;
    char cognome;
    };

    main(void)
    {
    struct prova *pointer;
    pointer->nome = 'x';
    pointer->cognome = 'y';
    printf("Nome: %c\n",pointer->nome);
    }
    ---
    Grazie
    Non ho capito i tipi di errore che ti dà, ma un errore grave l'hai fatto: NON hai inizializzato il puntatore alla struttura ! E prima di fare l'inizializzazione DEVI dichiarare una struttura, non solo definirla come hai fatto tu.
    Quindi, ad esempio:
    struct prova esempio;
    ora hai dichiarato una struttura di tipo prova. Ora puoi inizializzare il puntatore:
    pointer = &esempio;

    e poi prosegui.

    ciao.

  6. #6
    Utente di HTML.it L'avatar di ChReAn
    Registrato dal
    Aug 2002
    Messaggi
    486
    Oppure, senza dichiarare un'altra variabile, usa una malloc (che e' la soluzione preferita di solito).

    struct prova *pointer;

    pointer = malloc (sizeof (struct prova));

    Devi includere l'header stdlib.h per usare la malloc.

    Se poi vuoi fare lo sborone fai un controllo sulla validita' della malloc:

    if ((pointer = malloc (sizeof (struct prova)) == NULL)
    {
    printf ("Errore di allocazione\n");
    exit (1);
    }
    ChReAn
    -------------------

    Slackware 9.1 powered

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2001
    Messaggi
    167
    Originariamente inviato da ChReAn
    [B]Oppure, senza dichiarare un'altra variabile, usa una malloc (che e' la soluzione preferita di solito).

    struct prova *pointer;

    pointer = malloc (sizeof (struct prova));
    Manca il cast:
    pointer = (struct prova*)malloc (sizeof (struct prova));

    ciao.

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    160
    Avrei recuperato il codice con l'errore:
    'Segnale di annullamento'........
    ---

    #include <stdio.h>

    struct prova {
    int nome;
    char cognome;
    int indirizzo;

    };

    main(void)
    {
    struct prova *pointer;
    pointer->nome = 'x';
    pointer->cognome = 'y';
    pointer->indirizzo = 'z';

    printf("%c \n",pointer->cognome);
    }

    ---
    Grazie per i preziosi suggerimenti!

  9. #9
    Utente di HTML.it L'avatar di ChReAn
    Registrato dal
    Aug 2002
    Messaggi
    486
    Originariamente inviato da Level

    Manca il cast:
    pointer = (struct prova*)malloc (sizeof (struct prova));

    ciao.
    Non e' necessario.
    Provare per credere.
    ChReAn
    -------------------

    Slackware 9.1 powered

  10. #10
    Utente di HTML.it L'avatar di ChReAn
    Registrato dal
    Aug 2002
    Messaggi
    486
    Originariamente inviato da Van Basten
    Avrei recuperato il codice con l'errore:
    'Segnale di annullamento'........
    ---

    #include <stdio.h>

    struct prova {
    int nome;
    char cognome;
    int indirizzo;

    };

    main(void)
    {
    struct prova *pointer;
    pointer->nome = 'x';
    pointer->cognome = 'y';
    pointer->indirizzo = 'z';

    printf("%c \n",pointer->cognome);
    }

    ---
    Grazie per i preziosi suggerimenti!
    Questo va in segmentation fault.
    Alloca la memoria per la struttura prima di usarla.
    ChReAn
    -------------------

    Slackware 9.1 powered

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 © 2026 vBulletin Solutions, Inc. All rights reserved.