gio@ Δημοσ. 17 Μαρτίου 2010 Δημοσ. 17 Μαρτίου 2010 Ορίστε η εκφώνηση Να γραφεί πρόγραμμα σε C το οποίο θα ζητάει από το χρήστη να δώσει το όνομα ενός αρχείου και έναν ακέραιο αριθμό Χ. Έπειτα θα δημιουργεί μια διεργασία-παιδί η οποία καλείται να γράψει Χ χαρακτήρες στο αρχείο αυτό και να τερματίσει. Μετά τον τερματισμό, ο πατέρας δημιουργεί μια νέα διεργασία-παιδί η οποία ζητάει εκ νέου από το χρήστη το όνομα ενός αρχείου. Ελέγχει εάν το αρχείο αυτό υπάρχει ή όχι και εφ’όσον υπάρχει ζητάει από το χρήστη την άδειά του για να το διαγράψει. Στην περίπτωση κατάφασης το διαγράφει, ενώ στην αντίθετη περίπτωση τυπώνει το μέγεθος του αρχείου και αποχαιρετάει το χρήστη με ένα μήνυμα στην οθόνη. και να τι έχω κάνει μέχρι τώρα αλλά μου βγάζει προβλήματα αν μπορεί κάποιος να βοηθήσει >#include <stdio.h> #include <fcntl.h> #include <string.h> #include <stdlib.h> main() { int arithmos,child,child2; int fd; long filesize; char onoma[100],onoma2[100],n; printf("Dwste to onoma arxeiou:\n"); scanf("%s", onoma); printf("Dwste akeraio arithmo:\n"); scanf("%d",&arithmos); child = fork(); if (child == 0) /* child process */ { int i; fd = open("onoma", O_WRONLY | O_CREAT); for (i=0;i<arithmos;i++) n=write(fd, "onoma","arithmos"); close(fd); return (5); } else /* parent */ { wait(&child); /* wait for child to finish first */ } child2 = fork(); if (child2 == 0) /* child process 2 */ { printf("Dwste to onoma arxeiou:\n"); scanf("%s", onoma2); if (onoma2==onoma) { printf("Diagrafi tou arxeiou?\n Apantiste me Y/N\n"); scanf("%s", n); if (n="Y") { remove( "onoma" ); printf( "File successfully deleted" );} else { fseek(onoma, 1, SEEK_END); filesize = ftell(onoma); fclose(onoma); printf("To megethos tou arxeiou einai:" filesize); }}
bxenos Δημοσ. 17 Μαρτίου 2010 Δημοσ. 17 Μαρτίου 2010 Τι ακριβώς κάνεις εδω: fd = open("onoma", O_WRONLY | O_CREAT); n=write(fd, "onoma","arithmos"); if (onoma2==onoma) { if (n="Y") { remove( "onoma" ); δες με την ευκαιρία πως ορίζονται οι συναρτησεις ftell,fclose,open,write,close,... για διαχειρηση αρχειων
gio@ Δημοσ. 17 Μαρτίου 2010 Μέλος Δημοσ. 17 Μαρτίου 2010 Απο ότι κατάλαβα (του ξαδέρφου είναι η άσκηση ) Ανοίγει αρχείο για διάβασμα Γράφει στο αρχείο? Συγκρίνει αν υπάρχει αρχείο με ίδιο όνομα διαγράφει το αρχείο?
bxenos Δημοσ. 17 Μαρτίου 2010 Δημοσ. 17 Μαρτίου 2010 Τίποτα απο όλα αυτά δεν κάνει. Δες τα declaration των συναρτησεων π.χ. κάνε google στο stdio.h και διάβασε τη συνταξη και χρηση των συναρτησεων αυτων για αρχη. Ειναι τελειως λάθος τα ορίσματα που περνας(ει)
gio@ Δημοσ. 22 Μαρτίου 2010 Μέλος Δημοσ. 22 Μαρτίου 2010 την άλλαξα λίγο >#include <stdio.h> #include <fcntl.h> #include <string.h> #include <stdlib.h> main() { int arithmos,newkid,newkid2; int fd; int n; int status; char buf="A"; char onoma[100],onoma2[100]; long filesize; printf("Dwste to onoma arxeiou:\n"); scanf("%s", onoma); printf("Dwste akeraio arithmo:\n"); scanf("%d",&arithmos); newkid = fork(); if (newkid == 0) /* child process */ { int i; fd = open(onoma, O_WRONLY | O_CREAT); for (i=0;i<arithmos;i++) n=write(fd, buf,1); close(fd); return (5); } else /* parent */ { wait(&status); /* wait for child to finish first */ } newkid2 = fork(); if (newkid2 == 0) { printf("Dwste to onoma arxeiou pou psaxnete:\n"); scanf("%s", onoma2); if (-f onoma2) { char x; printf("Na diagrafei to arxeio? Y i N\n"); scanf("%s", x) if(x=Y) { remove("%s", onoma); } else { fseek(onoma, 1, SEEK_END); filesize = ftell(onoma); fclose(onoma); printf("To megethos tou arxeiou einai:" filesize); }}
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.