Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Mad Catz M.M.O. 7+: lo stesso DNA del R.A.T. 8+ ADV, ma con molti più pulsanti
Mad Catz M.M.O. 7+: lo stesso DNA del R.A.T. 8+ ADV, ma con molti più pulsanti
Con 22 tasti, il pulsante 5D, lo Shift Mode e il sensore PixArt 3395 da 26.000 DPI, il nuovo mouse wireless di Mad Catz si rivolge in modo preciso ai giocatori di MMO e RPG. Ma chi conosce già il R.A.T. 8+ ADV si accorgerà subito di quanto i due prodotti condividano, e di dove invece divergono
Radeon RX 9070 GRE, AMD la porta in tutto il mondo | Recensione Gigabyte Gaming OC
Radeon RX 9070 GRE, AMD la porta in tutto il mondo | Recensione Gigabyte Gaming OC
Abbiamo provato la Gigabyte Radeon RX 9070 GRE Gaming OC, nuova proposta RDNA 4 che si inserisce tra GeForce RTX 5060 Ti e RTX 5070. Prestazioni solide in rasterizzazione e ray tracing, frequenze elevate grazie all'overclock di fabbrica e raffreddamento efficace: ecco come si comporta nei nostri test.
Reolink OMVI 3i WiFi: videosorveglianza più intelligente e facile da usare
Reolink OMVI 3i WiFi: videosorveglianza più intelligente e facile da usare
Con tripla lente, tracking sincronizzato, visione notturna a colori e controllo locale senza abbonamenti, la OMVI 3i WiFi porta la sicurezza domestica a un livello molto più moderno, ma senza trasformarla in un sistema complicato da installare o usare
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 08-02-2005, 12: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, 13: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 13:27.
RaouL_BennetH è offline   Rispondi citando il messaggio o parte di esso
Old 08-02-2005, 13:54   #3
Ziosilvio
Moderatore
 
L'Avatar di Ziosilvio
 
Iscritto dal: Nov 2003
Messaggi: 16214
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, 21: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, 21:46   #5
Ziosilvio
Moderatore
 
L'Avatar di Ziosilvio
 
Iscritto dal: Nov 2003
Messaggi: 16214
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, 21: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, 08:34   #7
Ziosilvio
Moderatore
 
L'Avatar di Ziosilvio
 
Iscritto dal: Nov 2003
Messaggi: 16214
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, 09: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 09:11.
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 11-02-2005, 10: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, 10: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, 10: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, 10: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, 10: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, 10: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, 10:51   #15
Ziosilvio
Moderatore
 
L'Avatar di Ziosilvio
 
Iscritto dal: Nov 2003
Messaggi: 16214
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, 09: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, 09: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, 09: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, 10: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, 11: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 11:19.
misterx è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Mad Catz M.M.O. 7+: lo stesso DNA del R.A.T. 8+ ADV, ma con molti più pulsanti Mad Catz M.M.O. 7+: lo stesso DNA del R.A.T. 8+ ...
Radeon RX 9070 GRE, AMD la porta in tutto il mondo | Recensione Gigabyte Gaming OC Radeon RX 9070 GRE, AMD la porta in tutto il mon...
Reolink OMVI 3i WiFi: videosorveglianza più intelligente e facile da usare Reolink OMVI 3i WiFi: videosorveglianza pi&ugrav...
Recensione Vivo X300 Ultra: fotocamera eccezionale, ma prezzo proibitivo Recensione Vivo X300 Ultra: fotocamera ecceziona...
Xiaomi 17T Pro recensione: zoom Leica 5x e batteria silicio-carbonio per l'alternativa ai top Xiaomi 17T Pro recensione: zoom Leica 5x e batte...
Getac ZX80: il tablet Android con displa...
Fallout 76, Infestazioni: l'esplorazione...
Per l'IA servono ancora più investimenti...
Anthropic, DeepMind e Meta assumono filo...
ASUS rientra nel mercato dei tablet Andr...
Xiaomi 18, arrivano i primi rumor: dimen...
Gli editori potranno escludere i propri ...
Creative Sound Blaster Katana V2X, due f...
UL svela il prossimo benchmark di 3DMark...
Samsung Galaxy Z Fold 8: nuove conferme ...
Tuo figlio ti sta chiamando, ma è...
Il Parlamento Europeo sostituisce Google...
Thermaltake resuscita floppy disk e moni...
Control Resonant: svelati i requisiti PC...
UE, arriva il pacchetto per la sovranit&...
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: 09:14.


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