View Full Version : Esercizio in C e system call unix
MrEnrich
03-04-2004, 15:09
dovrei risolvere questo esercizio in C, mi scrivete una soluzione?
grazie
"Prendere un input da tastiera e scaricarlo in FILE1
Copiare in ordine inverso il contenuto di FILE1 in FILE2
utilizzando read e write"
Perché non provi a buttare giù TU una soluzione e poi vediamo quello che si può fare?
L'esercizio lo devi fare tu, noi possiamo darti sicuramente una mano. Ma addirittura pretendere di risolvertelo.....;)
O no?
MrEnrich
04-04-2004, 02:28
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
int main()
{
int fdin, fdout, n;
int c, buf[90];
if((fdin=open("FILE1",O_RDWR|O_CREAT|O_TRUNC,0644))<0) //Crea FILE1
printf("FILE1 open error\n"); //in modalita' read-write
if((fdout=open("FILE2",O_CREAT|O_RDWR|O_TRUNC,0644))<0) //Apre il file
printf("FILE2 open error\n"); //in cui copiare in modalita' write-only
n=read(STDIN_FILENO,buf,90); //leggo da standard input
write(fdin,buf,n); //scrivo su FILE1
n=lseek(fdin,-1,SEEK_END); //mi posiziono alla fine di FILE1
while ( n >= 0) {
read(fdin, &c, 1);
write(fdout, &c, 1);
n=lseek(fdin,-2,SEEK_CUR);
}
lseek(fdout,0,SEEK_SET);
while ( read(fdout, &c, 1) > 0)
write(STDOUT_FILENO, &c, 1);
exit(0);
}
---------------------------------------------------------------------
ho questa soluzione, ci sono alternative a questa?
Hai la firma irregolare... La dimensione massima dell'imamgine è 100x50... Puoi correggere ? Grazie ;)
MrEnrich
07-04-2004, 03:14
allora? altre soluzioni?
Fa esattemente quello che chiedevi...allora è giusta ;)
MrEnrich
07-04-2004, 11:10
Originariamente inviato da cionci
Fa esattemente quello che chiedevi...allora è giusta ;)
e grazie :rolleyes:
volevo sapere se esistono ALTRE soluzioni
Originariamente inviato da MrEnrich
e grazie :rolleyes:
volevo sapere se esistono ALTRE soluzioni
Hai usato read e write ? Fa quello che volevi ? Quindi è giusta...
Potrei scriverti 100 programmi diversi che fanno la stessa cosa, ma si baserebbero sempre sullo stesso principio...
MrEnrich
07-04-2004, 11:26
Originariamente inviato da cionci
Hai usato read e write ? Fa quello che volevi ? Quindi è giusta...
Potrei scriverti 100 programmi diversi che fanno la stessa cosa, ma si baserebbero sempre sullo stesso principio...
e dai.. scrivemene uno solo... piccolo piccolo... :)
te ne sarei molto grato...;)
Ma va bene come l'hai scritto tu ;) Cambierebbe solo quello che c'è nel contorno...il codice saliente rimarrebbe comunque quel ciclo :)
MrEnrich
07-04-2004, 11:49
Originariamente inviato da cionci
Ma va bene come l'hai scritto tu ;) Cambierebbe solo quello che c'è nel contorno...il codice saliente rimarrebbe comunque quel ciclo :)
ok... te ne posso proporre un altro? :
scrivere un programma c (myedit.c) che ricevendo in input il nome di un file ed un intero x si comporti nel seguente modo:
1) scriva sullo standart output gli ultimi x byte del file se il file già esiste; altrimenti crei il file con i permessi di accesso 644;
2) legga dallo standard input altri dati che l'utente vuole inserire alla fine e li scriva in tale file
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.