Torna indietro   Hardware Upgrade Forum > Software > Programmazione

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.
HONOR Pad X9 Max recensione, schermo ultra large a meno di 400 euro
HONOR Pad X9 Max recensione, schermo ultra large a meno di 400 euro
HONOR Pad X9 Max mette un pannello IPS da 13 pollici con risoluzione 2,5K e refresh a 120 Hz davanti a una batteria da 10.100 mAh e a quattro altoparlanti. Il listino parte da 399,90 euro, per un progetto molto chiaro e ambizioso: schermo ampio, buon audio e giornate lontano dalla presa, a un prezzo che non pesa sul portafoglio
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: 1631
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: 1631
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: 1631
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: 1631
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


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...
Jabra Evolve3 85: le cuffie sia per l'intrattenimento che per il lavoro Jabra Evolve3 85: le cuffie sia per l'intratteni...
Hacker contro hacker e danni per 740.000...
Xiaomi SkyNomad, boom da 27.147 auto in ...
Logitech concede un giorno di ferie ai s...
Amazon, questi mini PC hanno un display ...
BYD prepara una rivale di smart #2? Il b...
Amazon, 3 robot tagliaerba ECOVACS GOAT ...
La cifratura di WhatsApp e Signal funzio...
Motori elettrici cinesi contro quelli oc...
Windows e macOS sono già vecchi? ...
Sony WH-1000XM5 a 168€ su Amazon: costan...
AliExpress, questo monitor KTC da 27'' &...
TikTok come porta d'ingresso a OnlyFans,...
La Terra ha una mini-luna temporanea: ec...
Amazon, sconto EXTRA del 22% su videogio...
Windows 11, il Patch Tuesday di novembre...
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: 16:26.


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