Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Le soluzioni FSP per il 2026: potenza e IA al centro
Le soluzioni FSP per il 2026: potenza e IA al centro
In occasione del Tech Tour 2025 della European Hardware Association abbiamo incontrato a Taiwan FSP, azienda impegnata nella produzione di alimentatori, chassis e soluzioni di raffreddamento tanto per clienti OEM come a proprio marchio. Potenze sempre più elevate negli alimentatori per far fronte alle necessità delle elaborazioni di intelligenza artificiale.
AWS annuncia European Sovereign Cloud, il cloud sovrano per convincere l'Europa
AWS annuncia European Sovereign Cloud, il cloud sovrano per convincere l'Europa
AWS è il principale operatore di servizi cloud al mondo e da tempo parla delle misure che mette in atto per garantire una maggiore sovranità alle organizzazioni europee. L'azienda ha ora lanciato AWS European Sovereign Cloud, una soluzione specificamente progettata per essere separata e distinta dal cloud "normale" e offrire maggiori tutele e garanzie di sovranità
Redmi Note 15 Pro+ 5G: autonomia monstre e display luminoso, ma il prezzo è alto
Redmi Note 15 Pro+ 5G: autonomia monstre e display luminoso, ma il prezzo è alto
Xiaomi ha portato sul mercato internazionale la nuova serie Redmi Note, che rappresenta spesso una delle migliori scelte per chi non vuole spendere molto. Il modello 15 Pro+ punta tutto su una batteria capiente e su un ampio display luminoso, sacrificando qualcosa in termini di potenza bruta e velocità di ricarica
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 08-02-2005, 13:52   #1
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3741
Un ripasso in "C"

scusate se vi chiedo cose banali ma èda un pò che non programmo

parlando di strutture ........


Codice:
struct nome_non_obbligatorio{

int età;
char nome[50];

} nome_struttura;

e se voglio allocare 50 strutture di quel tipo scrivo:

Codice:
struct nome_struttura[50];
giusto ?

e se desidero allocare 'n' strutture dinamicamente ?

qui ahimè on mi ricordo più nulla


grazie 1000
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 08-02-2005, 14:10   #2
RaouL_BennetH
Senior Member
 
L'Avatar di RaouL_BennetH
 
Iscritto dal: Sep 2004
Messaggi: 3967
per l'allocazione dinamica delle strutture, è una cosa che sinceramente non ho ancora mai studiato (considera però che il C lo studio proprio da poco) ma, volendo ragionare di 'fantasia' (anzi, di ignoranza...) mi viene da pensare che potresti farlo con i puntatori e con malloc.

Faccio un esempio, ma non so proprio se possa essere corretto:

Codice:
typedef struct STRUTTURA *PSTRUTTURA;

PSTRUTTURA variabile = (PSTRUTTURA)malloc(sizeof(struct STRUTTURA));
di sicuro ho scritto una grande, enorme, cassata, ma spero apprezzerai l'inutile contributo di char che ho dato al tuo post

Piccolo edit per il codice da te postato:

Codice:
struct nome_non_obbligatorio{

int età;
char nome[50];

} nome_struttura;
Non è proprio così:

dove tu dici "nome_struttura", non è il nome (etichetta della struttura) ma l'istanza.

Poi, se non erro una struttura deve necessariamente avere un'etichetta (quella che tu hai chiamato "nome_non_obbligatorio").

Quindi:

struct etichetta {
variabili.......
} istanza ;

e, sempre se ho capito bene le strutture, puoi evitare inizialmente di dichiarare un'istanza, ma non un'etichetta (il nome della struttura).
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek

Ultima modifica di RaouL_BennetH : 08-02-2005 alle 14:27.
RaouL_BennetH è offline   Rispondi citando il messaggio o parte di esso
Old 08-02-2005, 14:54   #3
Ziosilvio
Moderatore
 
L'Avatar di Ziosilvio
 
Iscritto dal: Nov 2003
Messaggi: 16213
Re: Un ripasso in "C"

Quote:
Originariamente inviato da misterx
Codice:
struct nome_non_obbligatorio{

int età;
char nome[50];

} nome_struttura;
Questo dichiara una variabile di nome "nome_struttura" e tipo "struct nome_non_obbligatorio".
Se ti interessa che nome_struttura sia un altro nome per struct nome_non_obbligatorio, devi cominciare la definizione con la parola typedef.
Quote:
e se desidero allocare 'n' strutture dinamicamente ?
Ammettiamo che tu abbia usato typedef, e che nome_struttura sia un altro nome per struct nome_non_obbligatorio.
Se vuoi allocare dinamicamente n oggetti di tipo nome_struttura, ordinati in un vettore, devi dichiarare un puntatore a puntatori a nome_struttura:
Codice:
    nome_struttura **ns;
allocare una sequenza di n puntatori a nome_struttura:
Codice:
    ns = malloc(n*sizeof(nome_struttura*));
e allocare, a partire da ciascuno di essi, un oggetto di tipo nome_struttura:
Codice:
    for (i=0; i<n; i++)
        ns[i] = malloc(sizeof nome_struttura);
Fa' attenzione, perché per comodità non ho scritto la gestione delle eccezioni.
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" Chi scherza col fuoco si brucia.
Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici
REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu
Ziosilvio è offline   Rispondi citando il messaggio o parte di esso
Old 08-02-2005, 22:00   #4
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3741
Re: Re: Un ripasso in "C"

Quote:
Originariamente inviato da Ziosilvio
scusa Ziosilvio, ma è meglio se uso un ulteriore esempio meno teorico e più pratico in quanto mi sono perso

Codice:
struct {

int età;
char nome[50];

} agenda;

supponiamo di avere in un file i seguenti dati:

22 annalisa
35 patrizia
30 anna
40 aldo
45 giovanni
50 giacomo


e di volerli memorizzare dinamicamente nella struttura sopra; ovviamente io, non conosco a priori il numero di strutture da allocare in memoria, quindi, si dovrà ricorrere alla malloc()

ahimè, non mi ricordo nella maniera più assoluta come dichiarare un "array" di puntatori (**ptr???) che punteranno alle n-esime strutture
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 08-02-2005, 22:46   #5
Ziosilvio
Moderatore
 
L'Avatar di Ziosilvio
 
Iscritto dal: Nov 2003
Messaggi: 16213
Re: Re: Re: Un ripasso in "C"

Quote:
Originariamente inviato da misterx
Codice:
struct {

int età;
char nome[50];

} agenda;
Con questa sintassi, agenda è il nome di una variabile, non di un tipo; e non puoi dichiarare un array di variabili di un tipo senza nome.
Dovresti fare così:
Codice:
typedef struct agenda {
    int age;
    char name[50];
} agenda;
Questo codice contemporaneamente definisce un tipo strutturato di nome "struct agenda", e un nome alternativo "agenda" per tale tipo.
Quote:
supponiamo di avere in un file i seguenti dati:

22 annalisa
35 patrizia
30 anna
40 aldo
45 giovanni
50 giacomo


e di volerli memorizzare dinamicamente nella struttura sopra; ovviamente io, non conosco a priori il numero di strutture da allocare in memoria, quindi, si dovrà ricorrere alla malloc()
Se non conosci a priori né il numero di righe né un massimo per tale numero, allora dovresti usare una lista, non un array.
Oppure: ricavare il numero delle righe del file, e allocare dinamicamente un array di tanti puntatori ad agenda quante sono le righe del file.
Quote:
ahimè, non mi ricordo nella maniera più assoluta come dichiarare un "array" di puntatori (**ptr???) che punteranno alle n-esime strutture
Sì, la sintassi è proprio quella.
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" Chi scherza col fuoco si brucia.
Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici
REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu
Ziosilvio è offline   Rispondi citando il messaggio o parte di esso
Old 08-02-2005, 22:53   #6
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3741
non ho mai usato le liste, che vantaggio offrono ?
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 09-02-2005, 09:34   #7
Ziosilvio
Moderatore
 
L'Avatar di Ziosilvio
 
Iscritto dal: Nov 2003
Messaggi: 16213
Quote:
Originariamente inviato da misterx
non ho mai usato le liste, che vantaggio offrono ?
Vantaggi: allochi tutta e sola la memoria che ti serve davvero.
Svantaggi: fare una ricerca diventa più dispendioso in termini di tempo.
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" Chi scherza col fuoco si brucia.
Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici
REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu
Ziosilvio è offline   Rispondi citando il messaggio o parte di esso
Old 11-02-2005, 10:08   #8
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3741
grazie ziosilvio

una domanda sulla scanf()

stavo facendo delle prove di input con la scanf e non mi è chiaro il suo comportamento; se passo a questa:


Codice:
scanf("%c %d %d %d %s",&carattere, &a, &b, &c, &s);



Codice:
t   123   456   678   pippo
tra un parametro e l'altro vi sono più di uno spazio, ma scanf() li vede come se fossero separati da uno solo; è corretto questo suo comportamento ? (in pratica lavora per me togliendomi gli spazi ridondanti ?)


se ora digito:

Codice:
<spazio>t   123   456   678   pippo
con uno spazio iniziale (prima della lettera 't'), viene generato un output senza senso del tipo:

"4260124 4232996 4247784"

ha senso tutto ciò ?


ultima domanda

se dalla scanf() scritta sopra desidero che il parametro '%s' stringa possa essere di lunghezza variabile a piacere dell'utente, come dichiaro la variabile 's' ?

Ultima modifica di misterx : 11-02-2005 alle 10:11.
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 11-02-2005, 11:24   #9
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
Iscritto dal: Jun 2002
Città: Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8897
allora la funzione scanf è la + pericolosa che c'è ... cmq la dimesione della stringa è definita con una lunghezza e sforare la lunghezza significa fare danni.

Il miglior modo per le stringhe è questo:
Codice:
fgets (stdin, sString, iLung);
ricordati che se dichiari una stringa di N elementi, quindi diciamo che iLung = N i caratteri massimi che puoi scriverci sono N-1 dato che la funzione che ti ho postato mette già il terminatore di stringa il /0.

~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio.
Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 11-02-2005, 11:27   #10
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3741
ma io devo per forza usare la scanf()
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 11-02-2005, 11:36   #11
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
Iscritto dal: Jun 2002
Città: Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8897
ah cmq in casi in cui non puoi sapere a priori il numero degli elementi si ricorre per forza ad allocazioni dinamiche.

Ti metto modificato per il tuo semplice caso:

Codice:
#define N 50

typedef struct Info{
	int iAge;
	char cName[N];
}Data;

typedef struct EL{
	Data Info;
	struct EL *pNext;
} Node;

/* visualizza la lista */

void See_List (Node *pHead){
	while (pHead != NULL){
		/* visualizza tutti i campi che ti interessano */
		printf ("%s\t%d",pHead->Info.cName, pHead->Info.iAge);
	}
}	

/* inserimento in testa */

void Insert_Element (Node **pHead, Data Value){
	Node *pApp;
	pApp = malloc (sizeof(Node));
	pApp->Info = Value;
	if (*pHead == NULL){
		pApp->pNext = NULL;
		*pHead = pApp;
	}
	else{
		pApp->pNext = *pHead;
		*pHead = pApp;
	}
}

/* main */

int main (void){
	Node *Head;
	/* funtion */
	return (0);
}
Non l'ho compilato l'ho fatto in due minuti ma dovrebbe essere tutto corretto.
Se hai domande chiedi pure.

~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio.
Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 11-02-2005, 11:37   #12
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
Iscritto dal: Jun 2002
Città: Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8897
Quote:
Originariamente inviato da misterx
ma io devo per forza usare la scanf()
posso sapere il perchè??

~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio.
Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 11-02-2005, 11:47   #13
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3741
Quote:
Originariamente inviato da Fenomeno85
posso sapere il perchè??

~§~ Sempre E Solo Lei ~§~


è per un progetto ed è vivamente consigliato l'uso della scanf() per via della formattazione

nelle specifiche del progetto mi si dice che l'input sarà sempre corretto, quindi, nessuna necessità di un controllo, ma, l'ulimo parametro della scanf() deve essere una stringa della quale non si conosce a priori la sua lunghezza

potrei usare un:

char *s;

ma punterebbe a cosa ?
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 11-02-2005, 11:51   #14
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
Iscritto dal: Jun 2002
Città: Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8897
va be però la dimensione la devi per forza mettere dato che una stringa la devi mettere sotto un array oppure metterla dinamicamente non ne ho la + pallida idea e non so neanche se è possibile

~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio.
Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 11-02-2005, 11:51   #15
Ziosilvio
Moderatore
 
L'Avatar di Ziosilvio
 
Iscritto dal: Nov 2003
Messaggi: 16213
Quote:
Originariamente inviato da misterx
una domanda sulla scanf()

stavo facendo delle prove di input con la scanf e non mi è chiaro il suo comportamento; se passo a questa:


Codice:
scanf("%c %d %d %d %s",&carattere, &a, &b, &c, &s);



Codice:
t   123   456   678   pippo
tra un parametro e l'altro vi sono più di uno spazio, ma scanf() li vede come se fossero separati da uno solo; è corretto questo suo comportamento ? (in pratica lavora per me togliendomi gli spazi ridondanti ?)
Sì, è corretto.
Nella tua chiamata, scanf si aspetta una stringa costituita da un carattere, tre numeri interi, e una stringa, separati l'uno dall'altro da uno o più caratteri di spaziatura.
Comunque io userei questa sintassi:
Codice:
scanf("%c%d%d%d%s",&carattere,&a,&b,&c,&s");
Quote:
se ora digito:

Codice:
<spazio>t   123   456   678   pippo
con uno spazio iniziale (prima della lettera 't'), viene generato un output senza senso del tipo:

"4260124 4232996 4247784"

ha senso tutto ciò ?
Sì, ha senso.
Lo spazio è un carattere, quindi scanf scrive ' ' in &carattere.
Dopodiché dovrebbe leggere uno spazio, invece si ritrova 't', quindi termina senza modificare gli altri valori.
Quote:
ultima domanda

se dalla scanf() scritta sopra desidero che il parametro '%s' stringa possa essere di lunghezza variabile a piacere dell'utente, come dichiaro la variabile 's' ?
Devi costruirti "a mano" la stringa di formato (cioè il primo parametro di scanf), facendo in modo che tra '%' ed 's' ci sia una sequenza di cifre che rappresenta la lunghezza massima della stringa.
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" Chi scherza col fuoco si brucia.
Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici
REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu
Ziosilvio è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2005, 10:27   #16
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3741
Quote:
Originariamente inviato da Fenomeno85
va be però la dimensione la devi per forza mettere dato che una stringa la devi mettere sotto un array oppure metterla dinamicamente non ne ho la + pallida idea e non so neanche se è possibile

~§~ Sempre E Solo Lei ~§~

io l'ho trovato un sistema per catturare l'input "ridontante" della scanf()
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2005, 10:36   #17
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
Iscritto dal: Jun 2002
Città: Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8897
Quote:
Originariamente inviato da misterx
io l'ho trovato un sistema per catturare l'input "ridontante" della scanf()
vai spara mi interessa saperlo

~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio.
Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2005, 10:56   #18
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3741
Quote:
Originariamente inviato da Fenomeno85
vai spara mi interessa saperlo

~§~ Sempre E Solo Lei ~§~

quello che chiedevo in definitiva era questo:

Codice:
#include <stdio.h>
#include <stdlib.h>

char *creaparola(int carattere, char terminatore);

int main()
{

        char comando, *buf;
        int a, b ,c;
        int carattere;

        printf("Digita una comando: ");
        scanf("%c%d%d%d%c",&comando, &a, &b, &c, &carattere);

        buf = creaparola(carattere,'\n');
        printf("%c %d %d %d %s",comando, a, b, c, buf);

        return 0;
}

/****************************************************************************/

char *creaparola(int carattere, char terminatore)
{
        char *buf='\0';
        int i = 0;

        while((carattere = getchar()) != terminatore){
                buf = (char *) realloc(buf, i+1);
                buf[i++] = (char)carattere;
        }
        buf[i]='\0';

        return buf;
}
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2005, 11:07   #19
Fenomeno85
Senior Member
 
L'Avatar di Fenomeno85
 
Iscritto dal: Jun 2002
Città: Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8897
ok ma ti appoggi sempre a una funzione esterna quindi è inutile prendere il carattere nello scanf.

Comunque il mio consiglio è quello di non mettere i prototipi ma di usare una gerarchia quale: le funzioni chiamate sono sempre sopra le funzioni chiamanti. Se diventa molto lungo il progetto sai almeno dove cercare e diventa + leggibile.

~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio.
Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso
Fenomeno85 è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2005, 12:05   #20
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3741
questa porzione di codice, riempie una lista dall'alto verso il basso nel senso che, l'ultimo elemento ad entrare è anche il primo ad uscire quindi, lista di tipo LIFO

Ma come diamine si fa a riempirla al contrario ?

Ho provato a memorizzare un puntatore alla struttura chiamato "old" di modo che la struttura precedente riceva prima di una nuova allocazione l'indirizzo della nuova struttura; ma perchè diamine non funziona ?

Codice:
    struct punti {
       int x1, y1;
       char *nomepunto;
       struct punti *next;
    } ;

    typedef struct punti punti ;
    punti *testapnt = NULL, *tmppnt;

    punti *old = NULL;



   void punto(int x1 , int y1, char *nomepunto){

      if(old != NULL)
          tmppnt->next = old;

      tmppnt= (punti *) malloc(sizeof(punti ));
      tmppnt->x1 = x1;
      tmppnt->y1 = y1;
      tmppnt->nomepunto= nomepunto;

      tmppnt->next = NULL;  // casomai la lista finisce, eventualmente il NULL viene sovrascritto da "old"

      old = tmppnt; // memorizzo indirizzo precedente
      
      (if testapnt == NULL)
             testapnt = tmppnt;
   }

Ultima modifica di misterx : 13-02-2005 alle 12:19.
misterx è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Le soluzioni FSP per il 2026: potenza e IA al centro Le soluzioni FSP per il 2026: potenza e IA al ce...
AWS annuncia European Sovereign Cloud, il cloud sovrano per convincere l'Europa AWS annuncia European Sovereign Cloud, il cloud ...
Redmi Note 15 Pro+ 5G: autonomia monstre e display luminoso, ma il prezzo è alto Redmi Note 15 Pro+ 5G: autonomia monstre e displ...
HONOR Magic 8 Pro: ecco il primo TOP del 2026! La recensione HONOR Magic 8 Pro: ecco il primo TOP del 2026! L...
Insta360 Link 2 Pro e 2C Pro: le webcam 4K che ti seguono, anche con gimbal integrata Insta360 Link 2 Pro e 2C Pro: le webcam 4K che t...
Realme: la trasformazione in sub-brand d...
PlayStation 6 si farà attendere: ...
BWT Alpine chiude la prima tornata di pr...
Beyond Good & Evil 2 non è st...
Qualcomm: il CEO ha guadagnato quasi 30 ...
AMD: 'Non importa cosa dice Intel, i mig...
Non è solo colpa del mercato: il ...
3 smartphone ai prezzi più bassi ...
Pwn2Own Automotive 2026 da record: 76 ze...
Più watt, più bassi e subwoofer incluso:...
Xiaomi POCO F8 Pro, un top di gamma a 54...
Tassa di 2 euro sui piccoli pacchi: un a...
Robot super automatico con lavaggio a 75...
Ecco perché dovremmo tutti avere ...
È un robot completo con molte del...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 17:19.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v