Επεξεργασία αρχείων και string c

Συζητήσεις για την γλώσσα C και C++

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
mike_ledis
Δημοσιεύσεις: 4
Εγγραφή: 26 Νοέμ 2010 08:12

Επεξεργασία αρχείων και string c

Δημοσίευση από mike_ledis » 26 Νοέμ 2010 08:23

καλησπέρα.Προσπαθώ να κάνω ένα πρόγραμα το οποίο αρχίκα θα διαβάζει μια γραμμή χαρακτήρων απο ένα αρχείο. Ύστερα θα χρησιμοποιεί αυτή την γραμμή που διαβασε προηγουμένως ως όρισμα στην fopen, ώστε να να ανοίξει ένα άλλο αρχείο. Παρακάτω σας παραθέτω το πρόγραμμα μου.
main()
{
FILE *cfPtr1,*cfPtr2;
int g1,f;
int i;
char sizeLineInput1[512],sizeLineInput2[512],a[512],b;
cfPtr2=fopen("mike2.txt","r");// Ανοίγω το πρώτο αρχείο
fgets(sizeLineInput2, 512, cfPtr2);//Παίρνω την πρώτη γραμμή απο το αρχείο μου σε μία μεαβλητή
cfPtr1=fopen( sizeLineInput2,"r");//Χρησιμοποιώ την μεταβλητή σάν όρισμα στην fopen ώστε να ανοίξω ένα άλλο αρχείο
fgets(a, 512, cfPtr1);// Προσπαθώ να διαβάσω και να εμφανίσω απο το αρχείο που άνοιξα πριν.
printf("%s",a);
scanf("%s",b);
}

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

Επεξεργασία αρχείων και string c

Δημοσίευση από dva_dev » 26 Νοέμ 2010 09:11

OK. Μας είπες τι έχεις κάνει, αλλά δεν μας είπες τι είναι αυτό που ζητάς. Χρειάζεσαι βοήθεια κάπου;

[edit]
Σήμερα στις 08:23 ...
καλησπέρα, ...
[/edit]

Είναι καλημέρα, όχι καλησπέρα. :D

mike_ledis
Δημοσιεύσεις: 4
Εγγραφή: 26 Νοέμ 2010 08:12

Επεξεργασία αρχείων και string c

Δημοσίευση από mike_ledis » 26 Νοέμ 2010 09:58

Καλημέρα λοιπόν! :P Το πρόβλημα μου είναι οτι δέν μου εμφανίζει τίποτα στο τέλος του προγράμματος,ενώ κανονικά θα έπρεπε να μου εμφανίζει την πρώτη γραμμή του αρχείου που ανοίγω με την fopen().Συγκεκριμένα πιστέυω πως η γραμμή που παίρνω απο το πρώτο αρχείο και την δίνω ώς όρισμα στην δεύτερη fopen() δέν είναι μορφοποιημένη σωστά!Γιατί άν δώσω μία είσοδο απο το πληκτρολόγιο ως όρισμα μου ανοίγει κανονικά το αρχείο και μου εμφανίζει τα περιεχόμενα του.

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

Επεξεργασία αρχείων και string c

Δημοσίευση από dva_dev » 26 Νοέμ 2010 11:26

Ανοίγεις το αρχείο mike2.txt για να διαβάσεις το όνομα του αρχείου Β που θα ανοίξεις στη συνέχεια.
Οταν διαβάσεις την 1η γραμμή για να την χρησιμοποιήσεις σαν όνομα αρχείου θα πρέπει να επιβεβαιώσεις ότι δεν έχεις κενά (ή άλλους περίεργους χαρακτήρες) πριν από το όνομα, όπως και μετά το όνομα.
Αν στο mike2.txt έχεις πατήσει enter για να αλλάξεις γραμμή τότε η 1η γραμμή που διαβάζεις περιλαμβάνει σίγουρα και την αλλαγή γραμμής. Αν έχεις αφήσει κενά πριν ή μετά το όνομα περιλαμβάνει επίσης και αυτά.
Συνεπώς είναι σαν να προσπαθείς να ανοίξεις κάποιο αρχείο χρησιμοποιώντας την εντολή

Κώδικας: Επιλογή όλων

fopen("    some filename.txt     \r\n", "r");
Ολα αυτά τα κενά πριν και μετά το "some filename.txt" και τα "\r\n" πρέπει να φροντίσεις να τα καθαρίσεις. Αναλόγως το λειτουργικό που είσαι μπορεί η αλλαγή γραμμής να είναι "\r\n" ή "\n" ή "\r" μόνο, πρέπει να καλύψεις, μάλλον, όλες τις περιπτώσεις.

Για αρχή δοκίμασε να βάλεις στο mike2.txt μόνο το όνομα του αρχείου που θέλεις χωρίς να αλλάζεις γραμμή στο τέλος και χωρίς να βάλεις καθόλου κενά.

Άβαταρ μέλους
xultimatex
Honorary Member
Δημοσιεύσεις: 2505
Εγγραφή: 26 Ιούλ 2003 13:02
Τοποθεσία: Ξάνθη
Επικοινωνία:

Επεξεργασία αρχείων και string c

Δημοσίευση από xultimatex » 26 Νοέμ 2010 14:24

Και γενικότερα σε τέτοιες πειπτώσεις βοηθάει να βάζει μερικά printf ενδιάμεσα ώστε να εκτυπώνεις τί διάβασες και να το ελέγχεις.
:arrow: Αν προσπαθείς πολύ για να πετύχεις κάτι, ίσως το κάνεις με λάθος τρόπο...

Άβαταρ μέλους
virxen75
Δημοσιεύσεις: 493
Εγγραφή: 18 Φεβ 2009 00:17
Τοποθεσία: ΗΡΑΚΛΕΙΟ ΚΡΗΤΗΣ

Επεξεργασία αρχείων και string c

Δημοσίευση από virxen75 » 26 Νοέμ 2010 16:05


Απάντηση

Επιστροφή στο “C, C++”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης