Torna indietro   Hardware Upgrade Forum > Software > Programmazione

MSI PRO MAX EDGE AI+, Ryzen AI Max+ 395 e 128 GB per far girare in locale anche i modelli più grandi
MSI PRO MAX EDGE AI+, Ryzen AI Max+ 395 e 128 GB per far girare in locale anche i modelli più grandi
Abbiamo provato MSI PRO MAX EDGE AI+, un mini-PC professionale progettato per eseguire modelli di intelligenza artificiale in locale, senza dipendere dal cloud. Il sistema abbina il processore AMD Ryzen AI Max+ 395, 128 GB di memoria unificata e un telaio in alluminio da appena 4 litri, con l'obiettivo di offrire capacità di elaborazione elevate in un formato compatto.
Recensione vivo X500 Pro Max: la fotografia mobile ha un nuovo protagonista
Recensione vivo X500 Pro Max: la fotografia mobile ha un nuovo protagonista
Il nuovo top di gamma vivo punta su un comparto fotografico particolarmente articolato, con un teleobiettivo da 200 megapixel e teleconvertitori esterni capaci di arrivare a 400 mm equivalenti. Lo abbiamo provato a Tenerife, mettendo alla prova fotocamere, prestazioni, autonomia e accessori. Ecco come si è comportato.
WoW Forever: la beta è stato uno dei momenti più alti della storia dei videogiochi, e non si ripeterà
WoW Forever: la beta è stato uno dei momenti più alti della storia dei videogiochi, e non si ripeterà
Un mondo affollato e vivo, personaggi destinati a sparire a fine test e nessuno a inseguire l'oggetto giusto. Beta e stress test di World of Warcraft: Forever hanno fatto emergere un roleplay spontaneo, tra danze a Goldshire e code ordinate ai PNG
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 19-01-2009, 20: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, 20: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, 20: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, 20: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, 21: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, 22: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, 22: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, 22: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, 22: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, 23: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 01:18.
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2009, 14: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, 17: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, 18: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, 18: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, 18: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, 18: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, 19: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, 19: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, 19: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, 19: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


MSI PRO MAX EDGE AI+, Ryzen AI Max+ 395 e 128 GB per far girare in locale anche i modelli più grandi MSI PRO MAX EDGE AI+, Ryzen AI Max+ 395 e 128 GB...
Recensione vivo X500 Pro Max: la fotografia mobile ha un nuovo protagonista Recensione vivo X500 Pro Max: la fotografia mobi...
WoW Forever: la beta è stato uno dei momenti più alti della storia dei videogiochi, e non si ripeterà WoW Forever: la beta è stato uno dei mome...
Oracle AI World 2026: in Europa prima la sovranità, poi la sicurezza e solo dopo l'IA Oracle AI World 2026: in Europa prima la sovrani...
DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort DS N°7 E-Tense: il SUV premium made in Melfi...
Il razzo spaziale NASA SLS per la missio...
Il drone NASA Dragonfly ha volato per la...
GTA 6, preload dal 10 novembre: servono ...
The Elder Scrolls VI: Sentinel, Bethesda...
Un doppio disco di detriti attorno a una...
Windows 11: risolta la disattivazione fo...
42AI, l'intelligenza artificiale anticip...
Windows 11 26H2 gira con appena 128 MB d...
GPT-6.2 Astra compare in Codex, Claude F...
Record assoluto per Linux 7.4: quasi mez...
Datacenter “standard” esonerato dalla va...
Occhio ai consumi: nuovi limiti condivis...
Ericsson ISAC System, la tecnologia per ...
Comprano processori solo per gettarli: l...
Canva lancia Affinity per iPad: sketch, ...
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: 22:48.


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