PDA

View Full Version : problema con un pezzo di programma in C


giury91
09-09-2013, 11:52
salve a tutti. sono nuovo del forum quindi se sbaglio a fare qualcosa correggetemi così la prossima volta non sbaglio più. stavo creando un programma per mio uso personale, premetto che non sono un programmatore ma uno studente dell'università di ingegneria che ha frequentato un corso di programmazzione in c.
il pezzo del programma incriminato è proprio l'inizio cioè:

#include <stdio.h>
#include <stdlib.h>
#define M 2
typedef struct{
char nome[20];
float l;
float costocm;
}isolante;
typedef struct{
isolante dati[M];
}isolantetot;

int main(int argc, char *argv[])
{

isolantetot itot;

itot.dati[0].nome="eps" ;
printf("l'altro %s\n",itot.dati[0].nome);
itot.dati[0].l=0.04;
itot.dati[0].costocm=1.5;
itot.dati[1].nome= "xps";
itot.dati[1].l= 0.037;
itot.dati[1].costocm=1;


for(i=0; i<=M; i++){
printf("isolante: %s prezzo al cm: %.2f conducibilita termica: %.3f \n",itot.dati[i].nome, itot.dati[i].costocm, itot.dati[i].l);
}

mi suso se non sia corretto come l'ho postato...
io vorrei assegnare al percorso itot.dati[M].nome una stringa non da tastiera con la scanf ma direttamente dal programma cosi da poter richiamare il nome dell'isolante anche più avanti nel programma ma non capisco come fare perche se lo scrivo in questa maniera la printf mi stampa al posto di "eps " o "xps" il seguente "(null)" .
non so se sono stato abbastanza chiaro...qualcuno saprebbe spiegarmi o risolvere il problema?
ogni commento è gradito. grazie per il tempo perso a leggere il post:)

Eduadie
09-09-2013, 11:59
In C non si attribuisce un valore ad una stringa in questo modo:

stringa = "ciao"

ma tramite l'utilizzo della funzione strcpy() presente in string.h.

strcpy(stringa, "ciao").

giury91
09-09-2013, 12:20
scusami sono ignorante su questa cosa....dovrei scrivere in questa maniera quindi:

#define <string.h>
.
.
strcpy(itot.dati[0].nome,"eps");
:muro: ??

Eduadie
09-09-2013, 12:22
Proprio così!

giury91
09-09-2013, 13:18
grazie infinite.ora funziona tutto. grazie ancora