Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Mova Z70 Ultra Roller Complete: motore potente, rullo di lavaggio e l'IA a guidare
Mova Z70 Ultra Roller Complete: motore potente, rullo di lavaggio e l'IA a guidare
Mova Z70 Ultra Complete è un robot aspirapolvere che coniuga un'aspirazione potente e un lavaggio con rullo a logica di intelligenza artificiale che guida al meglio nella pulizia di casa: rulli e spazzole estensibili a pulire gli angoli e una base di ricarica che lava e ripristina il robot al emglio delle sue funzionalità dopo ogni azione di pulizia
Recensione Google Pixel 11: non ha l'HiLight dei Pro, ma è il Pixel più equilibrato di sempre
Recensione Google Pixel 11: non ha l'HiLight dei Pro, ma è il Pixel più equilibrato di sempre
Abbiamo provato Google Pixel 11, il più accessibile della nuova gamma: chip Tensor G6 condiviso con i modelli Pro, fotocamera 48 MP con Magic Capture e Stili Fotografici, display Actua da 3000 nit e batteria da 4985 mAh. Ecco come si comporta nell'uso quotidiano, e cosa cambia davvero rispetto a Pixel 11 Pro e Pro XL
Google Pixel 11 Pro XL: fotocamera al top, batteria indietro. Luci e ombre del nuovo flagship
Google Pixel 11 Pro XL: fotocamera al top, batteria indietro. Luci e ombre del nuovo flagship
Google Pixel 11 Pro XL debutta in Italia con il nuovo Tensor G6, lo Zoom Pro fino a 120x, il display Super Actua da 3600 nit e la new entry HiLight riservata ai modelli Pro: lo abbiamo provato in anteprima per diversi giorni prima del lancio commerciale, tra fotocamera generativa, ricarica ancora indietro rispetto ai rivali e un prezzo che parte da 1399 euro
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 19-01-2009, 19:10   #1
LacioDromBuonViaggio
Senior Member
 
L'Avatar di LacioDromBuonViaggio
 
Iscritto dal: Jul 2008
Città: Sardegna
Messaggi: 1005
[C] Inizializzare una matrice di stringhe, membro di una struttura.

Salve a tutti,
da main io scrivo questo

Codice:
char *str[]={"ciao","ciao","ciao"};
e funziona tutto!

Ma non riesco a inserire quella variabile in una struttura.

Codice:
struct struttura
{
    char *str[];
}

main()
{
    struct struttura item;
    item.str[]={"ciao","ciao","ciao"};
}
mi da questo errore:
error: expected expression before ‘]’ token

Qual è la sintassi giusta?
Ho provato anche:
Codice:
 item->str[]={"ciao","ciao","ciao"};
 item.str={"ciao","ciao","ciao"};
 item->str={"ciao","ciao","ciao"};
e a definire char **str;
ma niente!

Ho incluso stdlib.h e string.h.

Soluzioni?
__________________
Aeroengine II BBA Black | Asus P5N-T Deluxe 780i | Intel E8400 C0 @4,050Ghz 1,35v + TR Ultra-120 eXtreme | Corsair 2x2GB PC6400 XMS2 DHX @900Mhz 2,15v | XFX 8800 GT 512MB @730/990 + TR HR-03 Rev. A | Tagan TG500-BZ | Zalman ZM-MFC2 Fan Control | WD Raptor 10000rpm 150 GB + 1,5TB | Iiyama ProLite E2607WSV
LacioDromBuonViaggio è offline   Rispondi citando il messaggio o parte di esso
Old 19-01-2009, 19:37   #2
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Perché non puoi fare quella cosa con un'assegnazione, lo puoi fare solo durante un'inizializzazione (come hai fatto all'inizio).
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 19-01-2009, 19:41   #3
LacioDromBuonViaggio
Senior Member
 
L'Avatar di LacioDromBuonViaggio
 
Iscritto dal: Jul 2008
Città: Sardegna
Messaggi: 1005
Quote:
Originariamente inviato da DanieleC88 Guarda i messaggi
Perché non puoi fare quella cosa con un'assegnazione, lo puoi fare solo durante un'inizializzazione (come hai fatto all'inizio).
eh si ma quindi come risolvo?
io voglio inizializzare quel valore dal main.. anche perchè da struttura non lo posso fare, visto che mi converrebbe in quanto costante!
__________________
Aeroengine II BBA Black | Asus P5N-T Deluxe 780i | Intel E8400 C0 @4,050Ghz 1,35v + TR Ultra-120 eXtreme | Corsair 2x2GB PC6400 XMS2 DHX @900Mhz 2,15v | XFX 8800 GT 512MB @730/990 + TR HR-03 Rev. A | Tagan TG500-BZ | Zalman ZM-MFC2 Fan Control | WD Raptor 10000rpm 150 GB + 1,5TB | Iiyama ProLite E2607WSV
LacioDromBuonViaggio è offline   Rispondi citando il messaggio o parte di esso
Old 19-01-2009, 19:56   #4
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Dipende, a seconda di ciò che devi fare. Può esserti più comodo fare un'array bidimensionale dando una grandezza fissa alle stringhe, ed allora basterebbe fare una cosa tipo:
Codice:
strcpy(struttura.stringhe[0], "stringa1");
strcpy(struttura.stringhe[1], "stringa2");
strcpy(struttura.stringhe[2], "stringa3");
Altrimenti, se vuoi usare dei puntatori devi malloc()-are le tre stringhe e poi fare la strcpy(). Naturalmente, dovrai ricordarti di fare una free() corrispondente per ognuna delle tre stringhe, al termine del main().

P.S.: ora non ricordo con esattezza, ma con GCC dovrebbe esserti possibile anche fare una cosa del genere:
Codice:
struct struttura
{
    char *str[];
}

int main()
{
    struct struttura item = { str: {"ciao","ciao","ciao"} };

    /* ... */
    return 0;
}
Prova, magari sei fortunato.
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 19-01-2009, 20:28   #5
LacioDromBuonViaggio
Senior Member
 
L'Avatar di LacioDromBuonViaggio
 
Iscritto dal: Jul 2008
Città: Sardegna
Messaggi: 1005
Quote:
Originariamente inviato da DanieleC88 Guarda i messaggi
P.S.: ora non ricordo con esattezza, ma con GCC dovrebbe esserti possibile anche fare una cosa del genere:
Codice:
struct struttura
{
    char *str[];
}

int main()
{
    struct struttura item = { str: {"ciao","ciao","ciao"} };

    /* ... */
    return 0;
}
Prova, magari sei fortunato.
Proverò a fare così visto che uso GCC!

Mi serve che sia proprio tutto senza COSTANTI (in pratica sto facendo una specie di space invaders e quella matrice di stringhe rappresenta il 'disegno' di tutti gli item, quindi deve poter essere 3x2 4x4 1x5 ecc ecc..)

Se dovessi usare la malloc che sizeof ci metto? Mi sembra strano..
__________________
Aeroengine II BBA Black | Asus P5N-T Deluxe 780i | Intel E8400 C0 @4,050Ghz 1,35v + TR Ultra-120 eXtreme | Corsair 2x2GB PC6400 XMS2 DHX @900Mhz 2,15v | XFX 8800 GT 512MB @730/990 + TR HR-03 Rev. A | Tagan TG500-BZ | Zalman ZM-MFC2 Fan Control | WD Raptor 10000rpm 150 GB + 1,5TB | Iiyama ProLite E2607WSV
LacioDromBuonViaggio è offline   Rispondi citando il messaggio o parte di esso
Old 19-01-2009, 21:23   #6
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Se vuoi una cosa tipo quella puoi anche semplicemente mettere l'array in una variabile statica globale che sarà letta solo da chi disegna, ed inizializzarla staticamente.

Altrimenti dovresti allocare la dimensione giusta, e cioè il numero di caratteri di cui quella particolare stringa di compone, più uno per il terminatore di stringa ('\0'), il tutto moltiplicato per sizeof(char). Alternativamente, potresti usare strdup(), che non si limita a ricopiare la stringa, ma la duplica sull'heap, allocandone dinamicamente (ed automaticamente) la memoria. Ovviamente, in tal caso, non dimenticare la free().
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 19-01-2009, 21:31   #7
LacioDromBuonViaggio
Senior Member
 
L'Avatar di LacioDromBuonViaggio
 
Iscritto dal: Jul 2008
Città: Sardegna
Messaggi: 1005
Quote:
Originariamente inviato da DanieleC88 Guarda i messaggi
Se vuoi una cosa tipo quella puoi anche semplicemente mettere l'array in una variabile statica globale che sarà letta solo da chi disegna, ed inizializzarla staticamente.
Non ne voglio variabili globali!
Comunque mi chiedo come mai nel main funziona, invece con il membro della struttura non va!
__________________
Aeroengine II BBA Black | Asus P5N-T Deluxe 780i | Intel E8400 C0 @4,050Ghz 1,35v + TR Ultra-120 eXtreme | Corsair 2x2GB PC6400 XMS2 DHX @900Mhz 2,15v | XFX 8800 GT 512MB @730/990 + TR HR-03 Rev. A | Tagan TG500-BZ | Zalman ZM-MFC2 Fan Control | WD Raptor 10000rpm 150 GB + 1,5TB | Iiyama ProLite E2607WSV
LacioDromBuonViaggio è offline   Rispondi citando il messaggio o parte di esso
Old 19-01-2009, 21:36   #8
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Era solo una possibilità quella delle variabili globali.

In che senso non funziona, quale dei vari metodi? Alle brutte fatti una piccola routine di inizializzazione e fai le strdup().
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 19-01-2009, 21:49   #9
LacioDromBuonViaggio
Senior Member
 
L'Avatar di LacioDromBuonViaggio
 
Iscritto dal: Jul 2008
Città: Sardegna
Messaggi: 1005
Quote:
Originariamente inviato da DanieleC88 Guarda i messaggi
Era solo una possibilità quella delle variabili globali.

In che senso non funziona, quale dei vari metodi? Alle brutte fatti una piccola routine di inizializzazione e fai le strdup().
Il fatto è che se creo la matrice di stringa dal main e la inizializzo sul momento:
Codice:
int *str[]={"ciao","ciao"};
funziona tutto senza allocazioni varie o altro.

Probabilmente non conosco la sintassi giusta per inizializzare quel membro della struttura!
__________________
Aeroengine II BBA Black | Asus P5N-T Deluxe 780i | Intel E8400 C0 @4,050Ghz 1,35v + TR Ultra-120 eXtreme | Corsair 2x2GB PC6400 XMS2 DHX @900Mhz 2,15v | XFX 8800 GT 512MB @730/990 + TR HR-03 Rev. A | Tagan TG500-BZ | Zalman ZM-MFC2 Fan Control | WD Raptor 10000rpm 150 GB + 1,5TB | Iiyama ProLite E2607WSV
LacioDromBuonViaggio è offline   Rispondi citando il messaggio o parte di esso
Old 19-01-2009, 22:27   #10
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Quote:
Originariamente inviato da LacioDromBuonViaggio Guarda i messaggi
Il fatto è che se creo la matrice di stringa dal main e la inizializzo sul momento:
Codice:
int *str[]={"ciao","ciao"};
funziona tutto senza allocazioni varie o altro.

Probabilmente non conosco la sintassi giusta per inizializzare quel membro della struttura!
Diciamo che... non lo fai.
Per farlo dovresti usare una sintassi come quella che ti ho scritto sopra, ma non puoi passare un'array di dimensione variabile dentro una struttura, la quale è richiesto che abbia dimensione fissa (ognuno dei suoi campi deve avere una dimensione ben nota a compile-time, sennò salta tutto). Quindi purtroppo non funziona.
Non mi viene in mente nessun'altra soluzione se non allocare il tutto dinamicamente.

ciao
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!

Ultima modifica di DanieleC88 : 20-01-2009 alle 00:18.
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2009, 13:47   #11
LacioDromBuonViaggio
Senior Member
 
L'Avatar di LacioDromBuonViaggio
 
Iscritto dal: Jul 2008
Città: Sardegna
Messaggi: 1005
Ho risolto bypassando il problema.

Ovvero nella struttura metto un normale puntatore a char:

Codice:
struct item
{
   int var;
   int var2;
   char *p; //puntatore al vettore di stringhe
};
e poi da main creo prima il vettore di stringhe e poi gli associo il puntatore:

Codice:
main()
{
    char *disegno[]={"q_p"," ! "},
    
    struct item mostro={var1,var2,disegno[0]};

    printf("%s\n",mostro.p); //prima stringa
    printf("%s\n",mostro.p+strlen(mostro.p)+1);
    //... e così via moltiplicando per i l'offset in un eventuale ciclo for
}
__________________
Aeroengine II BBA Black | Asus P5N-T Deluxe 780i | Intel E8400 C0 @4,050Ghz 1,35v + TR Ultra-120 eXtreme | Corsair 2x2GB PC6400 XMS2 DHX @900Mhz 2,15v | XFX 8800 GT 512MB @730/990 + TR HR-03 Rev. A | Tagan TG500-BZ | Zalman ZM-MFC2 Fan Control | WD Raptor 10000rpm 150 GB + 1,5TB | Iiyama ProLite E2607WSV
LacioDromBuonViaggio è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2009, 16:11   #12
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Non è scomodissimo? Fai un char ** e campa felice.
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2009, 17:21   #13
~FullSyst3m~
Senior Member
 
L'Avatar di ~FullSyst3m~
 
Iscritto dal: Mar 2007
Messaggi: 4683
Spero di stare lontano dal C più tempo possibile
__________________
Firma eliminata e avatar cambiato. Troppa gente giudica il monaco dall'abito.
~FullSyst3m~ è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2009, 17:32   #14
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Quote:
Originariamente inviato da ~FullSyst3m~ Guarda i messaggi
Spero di stare lontano dal C più tempo possibile
Oh, ma non temere, questo non era certo il peggio che si potesse fare con il C.
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2009, 17:50   #15
~FullSyst3m~
Senior Member
 
L'Avatar di ~FullSyst3m~
 
Iscritto dal: Mar 2007
Messaggi: 4683
Quote:
Originariamente inviato da DanieleC88 Guarda i messaggi
Oh, ma non temere, questo non era certo il peggio che si potesse fare con il C.
Appunto, non voglio immaginare il peggio perchè mi vengono i capelli bianchi
__________________
Firma eliminata e avatar cambiato. Troppa gente giudica il monaco dall'abito.
~FullSyst3m~ è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2009, 17:57   #16
Vincenzo1968
Bannato
 
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
Quote:
Originariamente inviato da ~FullSyst3m~ Guarda i messaggi
Spero di stare lontano dal C più tempo possibile
Tratto da Todo Modo di Leonardo Sciascia:
Quote:
...
Il commissario sollevò il lenzuolo, guardò, sospirò; lo lasciò ricadere.
«Chi è?» domandò a don Gaetano.
«Il presidente della Furas. L'onorevole Michelozzi... Eletto senatore
alle ultime: ma si è dimesso per assumere la presidenza della Furas.
Ottima persona: colta, zelante, onesta...».
«E se ne può dubitare?» disse il commissario. Ma ci mise una vibra-
zione d'ironia, come a dire: anche se volessi, non potrei.
«Già» disse don Gaetano, riflettendo quella vibrazione come un raggio
su uno specchietto e rimandandola al commissario col senso di: non
c'è niente da faro, mio caro, bisogna che tu ci strida.

...
Vincenzo1968 è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2009, 18:00   #17
LacioDromBuonViaggio
Senior Member
 
L'Avatar di LacioDromBuonViaggio
 
Iscritto dal: Jul 2008
Città: Sardegna
Messaggi: 1005
Quote:
Originariamente inviato da DanieleC88 Guarda i messaggi
Non è scomodissimo? Fai un char ** e campa felice.
ma faccio un char p** nella struttura? o poi lo associo al vettore di stringhe in modo da poterlo utilizzare meglio quando poi faccio la stampa?
__________________
Aeroengine II BBA Black | Asus P5N-T Deluxe 780i | Intel E8400 C0 @4,050Ghz 1,35v + TR Ultra-120 eXtreme | Corsair 2x2GB PC6400 XMS2 DHX @900Mhz 2,15v | XFX 8800 GT 512MB @730/990 + TR HR-03 Rev. A | Tagan TG500-BZ | Zalman ZM-MFC2 Fan Control | WD Raptor 10000rpm 150 GB + 1,5TB | Iiyama ProLite E2607WSV
LacioDromBuonViaggio è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2009, 18:09   #18
~FullSyst3m~
Senior Member
 
L'Avatar di ~FullSyst3m~
 
Iscritto dal: Mar 2007
Messaggi: 4683
Quote:
Originariamente inviato da Vincenzo1968 Guarda i messaggi
Tratto da Todo Modo di Leonardo Sciascia:


Mi ha colpito nel profondo questa citazione... ma mai di quanto mi può colpire (e fare svenire) il C
__________________
Firma eliminata e avatar cambiato. Troppa gente giudica il monaco dall'abito.
~FullSyst3m~ è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2009, 18:18   #19
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da ~FullSyst3m~ Guarda i messaggi
Mi ha colpito nel profondo questa citazione... ma mai di quanto mi può colpire (e fare svenire) il C
Sei un po' OT ?
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2009, 18:35   #20
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da DanieleC88 Guarda i messaggi
Non è scomodissimo? Fai un char ** e campa felice.
A me sembra che vada bene, è una ottima soluzione se le stringhe sono sempre quelle
cionci è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Mova Z70 Ultra Roller Complete: motore potente, rullo di lavaggio e l'IA a guidare Mova Z70 Ultra Roller Complete: motore potente, ...
Recensione Google Pixel 11: non ha l'HiLight dei Pro, ma è il Pixel più equilibrato di sempre Recensione Google Pixel 11: non ha l'HiLight dei...
Google Pixel 11 Pro XL: fotocamera al top, batteria indietro. Luci e ombre del nuovo flagship Google Pixel 11 Pro XL: fotocamera al top, batte...
Non sai programmare? Ecco cosa si può fare con un LLM e una GeForce RTX 5070 Ti Non sai programmare? Ecco cosa si può far...
Recensione Samsung Galaxy Z Fold8 Ultra: il pieghevole più famoso diventa quasi perfetto Recensione Samsung Galaxy Z Fold8 Ultra: il pieg...
SpaceX non lancerà più Sta...
EHA Reader Awards 2026: i migliori prodo...
NVIDIA ha insegnato all'IA a ricostruire...
Rimosso un raro tumore grazie alla simul...
ASUS alza l'asticella del gaming: ecco i...
I satelliti Rassvet (Starlink russo) di ...
AMD stravince la sua stessa sfida sull'e...
Novità per Renault 5: più ...
Altman ammette: "Troppo ambiziosi s...
Grazie al radiotelescopio ALMA c'è...
Estensioni per browser e shadow AI sono ...
ASUS ROG punta sugli eSport con OLED da ...
Un chip più piccolo e un package ...
Windows 11, la DLL della memoria unifica...
Arrivano i nuovi Mac mini e Mac Studio c...
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: 21:28.


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