PDA

View Full Version : problema i/o c


gaiapuffo
28-05-2012, 10:15
Ciao devo fare una prova per un programma molto + grande dove voglio semplicemente calcolare la dim in byte di una stringa metterla su file e poi prenderla e metterla in un altra stringa...il mio dubbio è questo per calolare la dim in byte uso strlen(stringa)*sizeof(*stringa); in questo mi conta tutti i caratteri ma non il carattere /0 che credo venga messo in automatico quando faccio *stringa="ciao" quando vado a mettere la stringa nel file devo anche mettere tale carattere?quindi dovrei fare strlen(stringa)*sizeof(*stringa)+1?oppure non serve?

IL PROBLEMA CMQ DA ERRORE PERCHE QUANDO STAMPA MI STAMPA UN QUADRATINO SPASTICO CON DEI NUMERI E NON LA STRINGA dove sbaglio?





int main(){
int i;
char *stringa="ciao";
i=open("input.txt",O_WRONLY);
int byte=strlen(stringa)*sizeof(*stringa);
write(i,stringa,byte);
close(i);
i=open("input.txt",O_RDONLY);
char *stringa2;
read(i,stringa2,byte);
close(i);
printf("STAMPA");
printf("\n");
printf("%s\n",stringa2);

}

ESSE-EFFE
28-05-2012, 15:49
char *stringa2;
read(i,stringa2,byte);


Devi allocare stringa2 tramite malloc (oppure staticamente) prima di leggerla dal file. Inoltre, dovrai poi aggiungere il terminatore a fine stringa.