|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Aug 2003
Città: Biella
Messaggi: 692
|
[C]malloc e allocazione di record
Ciao a tutti...
ho questa struttura: typedef char Stringa[MAX_NAME_LEN]; typedef struct Studente { Stringa nome, cognome; int matricola; Stringa corso_di_laurea; }Studente; devo allocare un record usando la malloc...ma...booo non funziona! ho provato a fare così io: Studente el; el = (Studente *)malloc(sizeof(struct Studente)); ma nulla da errore(Undefined structure 'Studente').... qualche suggerimento su come fare??! grazie ciao |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Mar 2004
Messaggi: 1455
|
Quote:
Stringa nome, cognome; int matricola; Stringa corso_di_laurea; }; typedef Studente Spero di non sbagliarmi con la sintassi, ma non puoi dichiarare un typedef di una struttura che non esiste ancora.
__________________
Ciao ~ZeRO sTrEsS~ |
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Aug 2003
Città: Biella
Messaggi: 692
|
il fatto è che quella struttura è stata scritta dal professore nella descrizione dell'esercizio...e io l'ho copiata così!!!doooo
comunque non credo sia quello l'errore...non funziona lo stesso.. Ultima modifica di manu@2986 : 06-06-2006 alle 16:59. |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
|
Quote:
typedef struct { ... ... } Studente; cosi' definisci la struct Studente, poi dichiarare un pointer: Studente *pS; adesso puoi allocare: pS = (Studente *) malloc(sizeof(struct Studente)) sizeof(struct Studente) ??? ne allochi solo una ? ciao |
|
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
|
Quote:
consiglio: cerca "Tricky C" su google e scaricalo, e' un ottimo manuale del C, in italiano |
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Aug 2003
Città: Biella
Messaggi: 692
|
si ne alloco solo una...perchè poi questo record verrà assegnato a un campo di una tabella indicizzata tramite codice hash...ecc ecc ecc
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Jan 2005
Città: Gières
Messaggi: 3617
|
Codice:
typedef struct studente{
char cognome_nome[N];
char matricola[N];
char corso_di_laurea[N];
struct studente*next;
}Studente;
nel main Codice:
Studente *el; el = (studente*)malloc(sizeof(studente));
__________________
Intel i5 4570 - Gigabyte Z87-HD3 - Antec KÜHLER 620 V4 - Corsair/Kingston 16GB DDR3 1600Mhz - KFA2 GTX 1070 EX @ EXOC bios - SanDisk Ultra II 480GB - EVGA 650GQ - Sony KDL-24EX320 - Logitech G502 & G933 - SteelSeries APEX M500 - W10 64bit |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Jan 2005
Città: Gières
Messaggi: 3617
|
corso di de Martin?
tutti con gli stessi problemi..
__________________
Intel i5 4570 - Gigabyte Z87-HD3 - Antec KÜHLER 620 V4 - Corsair/Kingston 16GB DDR3 1600Mhz - KFA2 GTX 1070 EX @ EXOC bios - SanDisk Ultra II 480GB - EVGA 650GQ - Sony KDL-24EX320 - Logitech G502 & G933 - SteelSeries APEX M500 - W10 64bit |
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Aug 2003
Città: Biella
Messaggi: 692
|
niente non funziona...mi da sempre errore sulla struct Studente....
|
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Jan 2005
Città: Gières
Messaggi: 3617
|
ecco un esempio su come dichiarare e manipolare una lista di dati:
Codice:
#include <stdlib.h>
#include <stdio.h>
typedef struct nodo {
int info;
struct nodo *next;
}nodo;
//inserimento in testa
nodo *leggi_lista(void) {
int a;
nodo *p, *primo=NULL;
primo = NULL;
scanf("%d", &a);
while (a != -1) {
p = (nodo*)malloc(sizeof(nodo));
p->info = a;
p->next = primo;
primo = p;
scanf("%d", &a);
}
return(primo);
}
void stampa_lista(nodo *primo) {
while (primo != NULL) {
printf("%d -> ", primo->info);
primo = primo->next;
}
printf("NULL\n");
return;
}
//orinamento crescente
nodo *bubble_sort(nodo *primo) {
struct nodo *p, *ultimo;
int flag, appo;
ultimo = NULL;
flag = 1;
while (flag == 1) {
p = primo;
flag = 0;
while (p->next != ultimo) {
if (p->info > (p->next)->info) {
appo = p->info;
p->info = (p->next)->info;
(p->next)->info = appo;
flag = 1;
}
p = p->next;
}
ultimo = p;
}
return(primo);
}
int main(void) {
nodo *primo;
printf("Inserisci gli elementi (-1 per terminare): ");
primo = leggi_lista();
primo = bubble_sort(primo);
stampa_lista(primo);
system("PAUSE");
return(1);
}
__________________
Intel i5 4570 - Gigabyte Z87-HD3 - Antec KÜHLER 620 V4 - Corsair/Kingston 16GB DDR3 1600Mhz - KFA2 GTX 1070 EX @ EXOC bios - SanDisk Ultra II 480GB - EVGA 650GQ - Sony KDL-24EX320 - Logitech G502 & G933 - SteelSeries APEX M500 - W10 64bit |
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Aug 2003
Città: Biella
Messaggi: 692
|
uu...usando borland 5.02 mi dava sempre errore...invece usando dev c++ no!bah misteri...
|
|
|
|
|
|
#12 | |
|
Senior Member
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
|
Quote:
perche non posti tutto il sorgente ? |
|
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Aug 2003
Città: Biella
Messaggi: 692
|
ma non mi spiego neanche io sta cosa...ho compilato con dev c++ e mi trova errori diversi...correggo quelli e in borland funziona...
comunque ora è tutto ok...anche io ritengo migliore borland...sarà perchè l'ho sempre usato ma mi trovo veramente meglio... |
|
|
|
|
|
#14 | |
|
Senior Member
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
|
Quote:
qui dove lavoro abbiamo vari tipi di servers: Sun 2 vers diverse, Linux 2 vers diverse e ognuno ha il suo compilatore con la sua versione. Il comp di Linux ultima versione, per esempio, e' severissimo, ti controlla anche i commenti Prendi un main cosi: Codice:
#include <stdio.h>
#include <stdlib.h>
int main (void)
{
char *s;
char ss[strlen(s)];
return 0;
}
Error: integral constant expression expected un altro Sun dice Error: The function strlen must have a prototype. Error: An integer constant expression is required within the array subscript operator. per i 2 Linux tutto ok. su altre cose e' pignolissimo in questo caso mi fido + del secondo Sun perche' piu' pignolo. Un compilatore che ti da errore non e' un rompiballe ma ti avverte che qualcosa non va. Ci fosse l'opzione per fargli creare l'eseguibile lo stesso, nonostante gli errori, non e' che poi il prog. funzionerebbe ... |
|
|
|
|
|
|
#15 | |
|
Senior Member
Iscritto dal: Nov 2002
Messaggi: 4329
|
Quote:
__________________
|18k+|slk800|a7n8x|1Gb/ddr400|Gf4mx440|Pio108|WD 160Gb|Case|Uni|Album|AnimeClick|OneManga| |ClassicThrash!|BNR Metal|TrueMetal|Dime|Chuck| |
|
|
|
|
|
|
#16 | |
|
Senior Member
Iscritto dal: Aug 2003
Città: Biella
Messaggi: 692
|
Quote:
solo che mi ha stupito che il borland mi segnalasse errori incomprensibili, mentre l'altro mi ha segnalato errori completamente diversi(cavolate).... |
|
|
|
|
|
|
#17 | |
|
Senior Member
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
|
Quote:
|
|
|
|
|
|
|
#18 | |
|
Senior Member
Iscritto dal: Aug 2003
Città: Biella
Messaggi: 692
|
Quote:
|
|
|
|
|
|
|
#19 | |
|
Senior Member
Iscritto dal: Aug 2003
Città: Biella
Messaggi: 692
|
Quote:
|
|
|
|
|
|
|
#20 | |
|
Senior Member
Iscritto dal: Jan 2005
Città: Gières
Messaggi: 3617
|
Quote:
comunque io sono al polito.
__________________
Intel i5 4570 - Gigabyte Z87-HD3 - Antec KÜHLER 620 V4 - Corsair/Kingston 16GB DDR3 1600Mhz - KFA2 GTX 1070 EX @ EXOC bios - SanDisk Ultra II 480GB - EVGA 650GQ - Sony KDL-24EX320 - Logitech G502 & G933 - SteelSeries APEX M500 - W10 64bit |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 19:13.











su altre cose e' pignolissimo








