Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Nuova Dacia Spring, del modello precedente resta solo il nome: più grande, più efficiente e ora prodotta in Europa
Nuova Dacia Spring, del modello precedente resta solo il nome: più grande, più efficiente e ora prodotta in Europa
La seconda generazione della citycar elettrica di Dacia passa alla piattaforma RGEV small di Renault Group, cresce di 15 cm in lunghezza e 18 cm in larghezza, adotta un motore da 80 CV e una batteria LFP da 27,5 kWh per 250 km WLTP. Prezzi da 17.900 euro, produzione a Novo Mesto in Slovenia.
BOOX Picco: l'ebook reader minuscolo è una genialata, e si può attaccare allo smartphone
BOOX Picco: l'ebook reader minuscolo è una genialata, e si può attaccare allo smartphone
BOOX ha portato sul mercato Picco, un e-reader da 3,97 pollici che pesa 58 grammi e si aggancia al retro dello smartphone con un anello magnetico. Lo abbiamo usato con Pixel 11 Pro XL e iPhone 18 Pro per capire se un formato così ridotto regga la prova della lettura quotidiana
AMD EPYC Venice: dentro Zen 6, i SoC a 256 core e la sfida al costo della memoria
AMD EPYC Venice: dentro Zen 6, i SoC a 256 core e la sfida al costo della memoria
A Las Vegas AMD ha svelato i dettagli architetturali delle CPU EPYC di sesta generazione, note con il nome in codice Venice. Nuovi core Zen 6 e Zen 6c costruiti a 2 nanometri, fino a 256 core per socket, 16 canali di memoria, interfaccia PCI Express 6.0 e un'intera famiglia di proposte che va da Venice SP7 a Verano. Senza dimenticare la memoria, oggi la voce di costo più pesante in un server: AMD risponde con CXL 3.1 e con la tecnologia software MEXT, che porta la memoria flash dentro la gerarchia della DRAM.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 28-06-2011, 18:00   #1
mic85rm
Senior Member
 
Iscritto dal: Dec 2003
Città: roma
Messaggi: 1632
Vettore di variabili strutturate in C

Scrivere una funzione C che inizializza l'elemento i-esimo di un vettore di variabili strutturate di tipo

struct item {
int val;
char stringa[100];
};


con una stringa e un valore intero.

la mia soluzione è questa :

Codice:
struct item *inizializza(int valore,char string[100])
{
 struct item *inizia;
 inizia=(struct item *)malloc(sizeof(struct item));
 if(inizia==null)
 {
  return 0;
 }
 inizia->val=valore;
 inizia->stringa=string;
 return inizia;
}
è corretta?o meglio ho interpretato bene quello che l'esercizio mi chiede?

Ultima modifica di mic85rm : 28-06-2011 alle 18:23.
mic85rm è offline   Rispondi citando il messaggio o parte di esso
Old 28-06-2011, 18:13   #2
clockover
Senior Member
 
L'Avatar di clockover
 
Iscritto dal: Oct 2004
Messaggi: 1945
Totalmente sbagliate un sacco di cose... la prima cosa che hai sbagliato è che non hai indentato il codice... c'è un pulsantino qui sopra oppure scrivi CODE tra parentesi quadre, codice, /CODE sempre tra quadre

poi
Codice:
struct item inizializza(...)
vuol dire che devi ritornare una struct item, non un intero cioè
Codice:
return 0;
e non un puntatore alla struct
Codice:
return inizia;
quindi ti consiglio di cambiare la tua funzione in
Codice:
struct item * inizializza(...)
se fai una qualunque operazione dopo il return, quella qualunque operazione non verrà mai eseguita
Codice:
return inizia;
free(inizia);
intanto aggiusta tutto questo poi parliamo del resto
clockover è offline   Rispondi citando il messaggio o parte di esso
Old 28-06-2011, 18:23   #3
mic85rm
Senior Member
 
Iscritto dal: Dec 2003
Città: roma
Messaggi: 1632
aggiornato
mic85rm è offline   Rispondi citando il messaggio o parte di esso
Old 28-06-2011, 18:48   #4
clockover
Senior Member
 
L'Avatar di clockover
 
Iscritto dal: Oct 2004
Messaggi: 1945
E ti funziona?
clockover è offline   Rispondi citando il messaggio o parte di esso
Old 28-06-2011, 18:52   #5
mic85rm
Senior Member
 
Iscritto dal: Dec 2003
Città: roma
Messaggi: 1632
purtroppo non ho un compilatore c...
mic85rm è offline   Rispondi citando il messaggio o parte di esso
Old 29-06-2011, 01:56   #6
AngeL)
Senior Member
 
L'Avatar di AngeL)
 
Iscritto dal: May 2006
Città: Salerno
Messaggi: 936
Quote:
Originariamente inviato da mic85rm Guarda i messaggi
purtroppo non ho un compilatore c...

http://www.google.com/search?q=mingw se sei su win, altrimenti su linux hai già il gcc.

per compilare dai
Codice:
gcc nomefile
al terminale.
AngeL) è offline   Rispondi citando il messaggio o parte di esso
Old 29-06-2011, 19:08   #7
Supdario
Member
 
Iscritto dal: Mar 2008
Messaggi: 267
Codice:
 if(inizia==null)
 {
  return 0;
 }
NULL va scritto in maiuscolo, inoltre ti consiglierei di returnare NULL e non 0 (è la stessa cosa, ma si tratta di scrivere il codice in modo più rigoroso), quindi:

Codice:
if(inizia == NULL)
 {
  return NULL;
 }
Poi, questo non lo puoi fare:
Codice:
inizia->stringa=string;
Per copiare una stringa devi servirti dell'apposita funzione "strcpy", o in questo caso dato che la tua stringa è allocata nello stack ed ha una dimensione massima di 100 caratteri ti conviene usare strncpy:
Codice:
strncpy(inizia->stringa, string, 100);
Supdario è offline   Rispondi citando il messaggio o parte di esso
Old 30-06-2011, 14:09   #8
mic85rm
Senior Member
 
Iscritto dal: Dec 2003
Città: roma
Messaggi: 1632
il compilatore c non ce l'ho qui a lavoro

grazie a tutti per le risposte comunque ora posto la soluzione corretta dal problema posto sopra...

Codice:
typedef struct item item; /* così non devo scrivere tutte le volte struct */
struct item {
    int val;
    char stringa[100];
};

/* ... */

void inizializza(item arr[], int i, int valore, char string[100])
{
    /* manca la verifica degli argomenti... */
    arr[i].val = valore;
    strcpy(arr[i].stringa, string); /* non puoi fare l'assegnazione in quel modo per le stringhe e in generale gli array.. */
}
mic85rm è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Nuova Dacia Spring, del modello precedente resta solo il nome: più grande, più efficiente e ora prodotta in Europa Nuova Dacia Spring, del modello precedente resta...
BOOX Picco: l'ebook reader minuscolo è una genialata, e si può attaccare allo smartphone BOOX Picco: l'ebook reader minuscolo è un...
AMD EPYC Venice: dentro Zen 6, i SoC a 256 core e la sfida al costo della memoria AMD EPYC Venice: dentro Zen 6, i SoC a 256 core ...
HONOR Pad X9 Max recensione, schermo ultra large a meno di 400 euro HONOR Pad X9 Max recensione, schermo ultra large...
Lenovo ThinkPad X1 Carbon Gen 14: il business ultraleggero si rinnova dall’interno Lenovo ThinkPad X1 Carbon Gen 14: il business ul...
22 milioni di persone coinvolte: il giga...
CPU desktop, Intel rialza la testa e AMD...
NVIDIA, una petizione chiede il ritorno ...
SpaceX Starship: Ship 42 è stata ...
Meta multata per 805 milioni di euro dal...
Jensen Huang avrebbe nascosto ai vertici...
Le prime cuffie over-ear di Vivo arrivan...
GPU, CPU e fotoni: il piano di AMD per p...
La soluzione di Google per i nuovi occhi...
Il futuro di XBOX passa per l'intelligen...
Amazon, le 13 offerte da non perdere ogg...
Svendita TV su MediaWorld: OLED LG e Sam...
AMD si ricorda dei gamer, ma il messaggi...
Fate in fretta: su Mediaworld c'è...
Ho usato ArtCraft per trasformare un mio...
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: 08:43.


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