Torna indietro   Hardware Upgrade Forum > Software > Programmazione

L'Europa conta nella tecnologia e può essere autonoma. Cosa si è detto al Nextcloud Summit 2026
L'Europa conta nella tecnologia e può essere autonoma. Cosa si è detto al Nextcloud Summit 2026
La parola d'ordine al Nextcloud Summit 2026, che si è tenuto a Monaco, è stata "sovranità". Non come è spesso usato questo termine in politica ma, al contrario, come capacità positiva di decidere il proprio destino tecnologico, con modalità collaborative e aperte. L'Europa dice già molto nel mondo open source, che viene visto come mezzo per ottenere la tanto agognata autonomia digitale
Dreame X60 Pro Ultra Complete: i bracci si estendono sempre di più
Dreame X60 Pro Ultra Complete: i bracci si estendono sempre di più
Dreame X60 Pro Ultra Complete implementa due bracci estensibili, per spazzola e moccio, che si spingono ben oltre quanto visto sino ad oggi permettendo una pulizia di casa ancor più capillare e precisa
TCL 65C8L, la recensione del SQD-Mini LED da 4400 nit misurati
TCL 65C8L, la recensione del SQD-Mini LED da 4400 nit misurati
La tecnologia SQD-Mini LED di TCL arriva sul taglio da 65 pollici con la serie C8L: 2040 zone, pannello WHVA 2.0 e un picco che alle rilevazioni delle sonde tocca i 4400 nit nel profilo Filmmaker e un HDR quasi perfetto
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 06-05-2013, 16:51   #1
Riccardo88
Senior Member
 
L'Avatar di Riccardo88
 
Iscritto dal: Jun 2006
Città: Napoli
Messaggi: 786
[C] Inserire stringa in un campo

Domanda banale, ma in C non mi viene e non capisco perchè.

In pratica devo soltanto inserire una stringa in un campo di una struct.

Codice:
#define NMAX 30

typedef struct{
               char nome[ NMAX ];
               char cognome[ NMAX ];
               int matricola;
}studente;

void leggiStruttura( studente s );
void stampaStruttura( studente s );
--------------------------------------------- Header ---

void leggiStruttura( studente s )
{    
     printf("Inserisci i dati dello studente:\n");
     printf("Nome: ");
     scanf( "%s", &s.nome );
     printf("Cognome: ");
     scanf( "%s", &s.cognome );
     printf("Matricola: ");
     scanf( "%d", &s.matricola );
     
}
     
void stampaStruttura( studente s )
{    
     printf("Stampo i dati dello studente:\n");
     printf("Nome: ");
     printf( "%s\n", &s.nome );
     printf("Cognome: ");
     printf( "%s\n", &s.cognome );
     printf("Matricola: ");
     printf( "%d\n", &s.matricola );
     
}
------------------------------ .c ---

#include "libretto20Esami.h"

int main(int argc, char *argv[])
{
    studente mioStudente;
    
    leggiStruttura( mioStudente );
    stampaStruttura( mioStudente );
    
    printf("\n\n");
  
  system("PAUSE");	
  return 0;
}
Dov'è l'errore ?

Tnx.
__________________
Q9650@4140Mhz Voltaggi Link [Enermax Über Chakra Spider Version] Feedback positivi ottenuti per vendite fatte a: Alfio89, Deskmat, Renato10, il mic, sosa, Emack - [ Lastre di Alluminio per modding computer ]
Riccardo88 è offline   Rispondi citando il messaggio o parte di esso
Old 06-05-2013, 18:33   #2
Mettiu_
Member
 
L'Avatar di Mettiu_
 
Iscritto dal: Jul 2011
Messaggi: 250
Dovresti utilizzare i puntatori per passare il parametro alla tua funzione leggiStruttura, altrimenti le modifiche che la funzione effettua sulla struttura non si ripercuotono sulla variabile passata (che è la semantica che intendi dare tu al codice) ma solo su una copia locale alla funzione, che viene distrutta alla fine della chiamata.
Per quanto riguarda la funzione stampaStruttura, non è strettamente necessario passare il puntatore a studente (anche se potrebbe valere la pena in qualche caso) perchè la funzione si limita a leggere e non modifica nessun campo della variabile...
In soldoni, le due funzioni diventano così:
Codice:
void leggiStruttura( studente* s );
void stampaStruttura( studente s );

void leggiStruttura( studente* s )
{    
     printf("Inserisci i dati dello studente:\n");
     printf("Nome: ");
     scanf( "%s", s->nome );
     printf("Cognome: ");
     scanf( "%s", s->cognome );
     printf("Matricola: ");
     scanf( "%d", &(s->matricola) );
     
}
     
void stampaStruttura( studente s )
{    
     printf("Stampo i dati dello studente:\n");
     printf("Nome: ");
     printf( "%s\n", s.nome );
     printf("Cognome: ");
     printf( "%s\n", s.cognome );
     printf("Matricola: ");
     printf( "%d\n", s.matricola );
     
}
Mentre per quanto riguarda il main:

Codice:
	studente mioStudente;
	leggiStruttura( &mioStudente );
	stampaStruttura( mioStudente );
	printf("\n\n");
	system("PAUSE");
	return 0;
Ciao
__________________
Non c'è cosa peggiore nella vita di un programmatore di un errore che si presenta solo ogni tanto.

CONCLUSO POSITIVAMENTE CON: oldfield, furletto, SL45i
Mettiu_ è offline   Rispondi citando il messaggio o parte di esso
Old 06-05-2013, 21:21   #3
Riccardo88
Senior Member
 
L'Avatar di Riccardo88
 
Iscritto dal: Jun 2006
Città: Napoli
Messaggi: 786
Grazie mille, funziona tutto!
__________________
Q9650@4140Mhz Voltaggi Link [Enermax Über Chakra Spider Version] Feedback positivi ottenuti per vendite fatte a: Alfio89, Deskmat, Renato10, il mic, sosa, Emack - [ Lastre di Alluminio per modding computer ]
Riccardo88 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


L'Europa conta nella tecnologia e può essere autonoma. Cosa si è detto al Nextcloud Summit 2026 L'Europa conta nella tecnologia e può ess...
Dreame X60 Pro Ultra Complete: i bracci si estendono sempre di più Dreame X60 Pro Ultra Complete: i bracci si esten...
TCL 65C8L, la recensione del SQD-Mini LED da 4400 nit misurati TCL 65C8L, la recensione del SQD-Mini LED da 440...
MSI Maestro 500 Wireless: ANC e 90 ore di autonomia a 70 euro MSI Maestro 500 Wireless: ANC e 90 ore di autono...
NL-LC1 è il primo dissipatore a liquido AIO di Noctua: silenzio è la parola d'ordine NL-LC1 è il primo dissipatore a liquido A...
Dopo gli unicorni, arrivano i "soon...
Europei sempre più diffidenti ver...
L'acquisto di Steam Machine è un ...
Lenovo Prime Day: i 6 migliori sconti (a...
CATL non riesce a superare la fase proto...
Mythos, il caso si complica: causa contr...
Il pazzesco nuovo record di Xiaomi YU7 G...
OneXPlayer 3: un PC gaming in formato Ni...
Climate.us riporta online i 15 anni di C...
Hisense da 58 pollici sotto i 300€ fa tr...
Windows 11 26H2: cosa cambia e chi resta...
SpaceX ha lanciato la sua prima capsula ...
Il prezzo medio di vendita degli smartph...
Prime Day robot tagliaerba: MAMMOTION, D...
Recensione Google Home Speaker: Gemini s...
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: 20:56.


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