Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Tascabile e con Android: BOOX Go 6 Gen II è diverso da tutti gli altri e-reader
Tascabile e con Android: BOOX Go 6 Gen II è diverso da tutti gli altri e-reader
BOOX Go 6 Gen II porta per la prima volta il supporto allo stilo su un e-reader da 6 pollici, affiancando 3 GB di RAM al collaudato Snapdragon 665 e un design rivisto con scocca posteriore a costolature. Su carta la proposta è interessante, ma Android 11 fuori supporto, l'assenza di un alloggiamento per il pennino e un'autonomia ridotta rispetto agli e-reader tradizionali sono i compromessi da accettare
Recensione Lenovo Idea Tab Plus: il tablet da 12 pollici che costa meno di 300 euro
Recensione Lenovo Idea Tab Plus: il tablet da 12 pollici che costa meno di 300 euro
Lenovo Idea Tab Plus prova a portare un display da 12,1 pollici 2.5K, quattro speaker Dolby Atmos e una batteria da 10.200 mAh sotto la soglia psicologica dei 300 euro, penna inclusa. Lo abbiamo usato per oltre una settimana per capire dove l'azienda ha tagliato e dove invece ha tenuto il punto
Oltre il contante e le crypto: tutto sull'Euro Digitale e la nuova sovranità monetaria europea
Oltre il contante e le crypto: tutto sull'Euro Digitale e la nuova sovranità monetaria europea
L'euro digitale è una valuta fiat che entrerà in vigore nei prossimi anni. L'obiettivo principale è quello di ridurre la dipendenza dalle piattaforme di pagamento digitali statunitensi e offrire ai cittadini un modo semplice per trasferire denaro. Anche offline, anche in maniera (pseudo)anonima
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


Tascabile e con Android: BOOX Go 6 Gen II è diverso da tutti gli altri e-reader Tascabile e con Android: BOOX Go 6 Gen II &egrav...
Recensione Lenovo Idea Tab Plus: il tablet da 12 pollici che costa meno di 300 euro Recensione Lenovo Idea Tab Plus: il tablet da 12...
Oltre il contante e le crypto: tutto sull'Euro Digitale e la nuova sovranità monetaria europea Oltre il contante e le crypto: tutto sull'Euro D...
Recensione HONOR Magic V6: spessore record e super batteria. È lui il fold da battere? Recensione HONOR Magic V6: spessore record e sup...
Redmi Pad 2 9.7: ampio display, economico e peso contenuto, ma qualche limite nelle prestazioni Redmi Pad 2 9.7: ampio display, economico e peso...
Piccolo è bello: Cisco presenta A...
Z.AI avvia un data center da 1 gigawatt....
Microsoft e Mistral annunciano un accord...
Grazie al Very Large Telescope potrebbe ...
Sony FX5: RAW interno X-OCN e Open Gate ...
AMD e Anthropic, affare fatto: 5 miliard...
Cyber Arena Tour 2026, WINDTRE BUSINESS ...
Wistron ha aperto il primo stabilimento ...
"Così è facile perder...
Peak Design ripensa la staffa a L: il tr...
Samsung: ufficiale la serie Galaxy Z Fol...
Galaxy Watch Ultra2 e Watch9 ufficiali: ...
Un razzo spaziale Falcon 9 ha lanciato l...
Microlino: dal rischio di fallimento all...
SpaceX, uno stadio di Falcon 9 si schian...
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: 04:20.


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