- Codice: Seleziona tutto
Il programma può essere semplice ho difficile ma la read e la write richiedono un puntatore e tu devi passargli un puntatore!
forse in questo caso no perchè buf è l'array per cui la read legge i caratteri e mette in buf, ho provato solo a cambiare *buf in buf[8] è andato tutto ok.
infatti
- Codice: Seleziona tutto
:~$ gcc -fsyntax-only -Wstrict-prototypes -Wall copia2.c
non mi da nessun errore.
adesso però dovrei fare un'altra domanda, se in quel file ho 14 caratteri(compresi gli spaci bianchi) cioè in FILE3 ci sta scritto io sono a casa
- Codice: Seleziona tutto
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#define M 30
int main(void)
{
int fdin, i;
char buf[M];
fdin=open("FILE3", O_RDONLY); //Crea FILE1
i=lseek(fdin,0,SEEK_CUR);
read(fdin,buf,20);
write(1,buf,20);
exit(0);
}
compilo ed eseguo mi esce
~$ ./copia2
io sono a casôsentenza@slack:~$
se nella read e write metto come byte letti e scritti 14 mi esce
$ ./copia2
io sono a casasentenza@slack:~$
come mai? e poi ho notato un'altra cosa con la printf per fare andare a capo in cursore si usa \n con la write?
cioè io adesso ho sto output
$ ./copia2
io sono a casasentenza@slack:~$
se vorrei
$ ./copia2
io sono a casa
sentenza@slack:~$
questo con la printf basta un \n e con write.
ho provato ad fare questo in FILE3 sono andato a capo dopo aver scritto io sono a casa e invece di leggere e scrivere 14 caratteri ho voluto specificare 15 nella read e write è giusto fare così o ci sta un metodo più tecnico.
grazie a tutti per le risposte.