Lomar Δημοσ. 29 Φεβρουαρίου 2008 Δημοσ. 29 Φεβρουαρίου 2008 Χαίρεται, έχω φτιάξει το παρακάτω πρόγραμμα για αποκοπή σε C. έχω ψάξει και στο google για σχετική βοήθεια, και ειλικρινά δεν μπορώ να καταλάβω που έχω κάνει λάθος στον παρακάτω κώδικα... Ο compiler δεν μου εμφανίζει κάποιο error, όταν όμως τρέχει το πρόγραμμα και δίνω το όνομα του αρχείου προς αποκοπή (βασικά κάνω αποκοπή στον ίδιο φάκελλο δλδ κάτι σαν μετονομασία), δημιουργείται το temp αρχείο και κολλάει το πρόγραμμα εκεί. Δεν μου εμφανίζει "αποστολή σφάλματος στη Microsoft", το comodo μόνο εμφανίζει σχετικό μήνυμα, και το κλείνω κανονικά με Ctrl+C αφού δεν συνεχίζεται κανονικά η λειτουργία του. Πιστεύω πως κάτι πρέπει να γίνεται πρίν απο τη διαγραφή του πρώτου αρχείου, αφού τελικά δεν διαγράφεται και δεν δημιουργείται το νέο αρχείο (το vita). > #include <stdio.h> #include <string.h> int main(){ FILE *alfa; FILE *tempf; FILE *vita; char temps, tempn, name[15], name2[4]; strcpy(name2, "temp"); printf ("\n\n ONOMA ARXEIOU PROS APOKOPH: "); scanf("%s",name); alfa=fopen(name,"r"); if (!alfa){ printf ("\n\n TO ARXEIO DEN UPARXEI. TERMATISMOS TOU PROGRAMMATOS. \n\n"); system ("pause"); return 1; } tempf=fopen("temp","w"); while (!feof(alfa)){ temps=fgetc(alfa); fputc(temps,tempf); } fclose(alfa); remove (name); vita=fopen(name,"w"); while (!feof(tempf)){ temps=fgetc(tempf); fputc(temps,vita); } fclose (tempf); remove (name2); fclose (vita); printf ("\n\n H APOKOPH OLOKLHRWTHIKE EPITUXOS. \n\n"); system ("pause"); return 0; } απλουστευμένος κώδικας που να κάνει τις παραπάνω σχετικές λειτουργίες του λειτουργικού είναι ο παρακάτω ο οποίος λειτουργεί κανονικότατα: > #include <stdio.h> #include <string.h> int main(){ char ena[5], dio[5], name[5]; FILE *alfa, *vita; strcpy(ena,"w"); strcpy(name,ena); alfa=fopen(name,"r"); strcpy(dio, "n"); vita=fopen("n","w"); fclose(alfa); fclose(vita); system ("pause"); remove (ena); remove (dio); system("pause"); return 0; } Οποιαδήποτε βοήθεια ευπρόσδεκτη και πολύτιμη, ευχαριστώ εκ των προτέρων.
pinball_elf Δημοσ. 29 Φεβρουαρίου 2008 Δημοσ. 29 Φεβρουαρίου 2008 Με μια προχειρη ματια νομιζω οτι ο κωδικας εχει προβλημα στο σημειο > vita=fopen(name,"w"); while (!feof(tempf)){ temps=fgetc(tempf); fputc(temps,vita); } διοτι το αρχειο tempf το ειχες ανoιξει προηγουμενως μονο για write: > tempf=fopen("temp","w");
Lomar Δημοσ. 29 Φεβρουαρίου 2008 Μέλος Δημοσ. 29 Φεβρουαρίου 2008 Είχες απόλυτο δίκαιο, το διόρθωσα και το παρακάτω με το vita: > #include <stdio.h> #include <string.h> int main(){ FILE *alfa; FILE *tempf; FILE *vita; char temps, tempn, name[15], name2[15]; printf ("\n\n ONOMA ARXEIOU PROS APOKOPH: "); scanf("%s",name); printf ("\n\n ONOMA NEOU ARXEIOU: "); scanf ("%s",name2); alfa=fopen(name,"r"); if (!alfa){ printf ("\n\n TO ARXEIO DEN UPARXEI. TERMATISMOS TOU PROGRAMMATOS. \n\n"); system ("pause"); return 1; } tempf=fopen("temp","w"); fclose(tempf); tempf=fopen("temp","r"); while (!feof(alfa)){ temps=fgetc(alfa); fputc(temps,tempf); } fclose(alfa); remove (name); vita=fopen(name2,"w"); fclose(vita); vita=fopen(name2,"r"); while (!feof(tempf)){ temps=fgetc(tempf); fputc(temps,vita); } fclose (tempf); remove ("temp"); fclose (vita); printf ("\n\n H APOKOPH OLOKLHRWTHIKE EPITUXOS. \n\n"); system ("pause"); return 0; } thnks!
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.