Jump to content



C++ και fgets


JdCZT

Recommended Posts

Παιδες εχω χαζεψει για τα καλα...εστω αρχειο κειμενου απο "ps -A > PID" της μορφης:

PID TTY TIME CMD

1 ? 00:00:00 init

2 ? 00:00:00 kthreadd

. . . .

. . . .

. . . .

4312 ? 00:00:00 hald-addon-stor

και κωδικα

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main()
{
FILE *fp;
char PID[6],c;
int a;
fp=fopen("PID.txt","r");

while ((c=fgetc(fp)) != EOF )
{
fgets(PID,6,fp);
printf(PID);
}

fclose (fp);
scanf("%d",&a);
return 0;
}

Δε θα επρεπε να απομονωνει τους πρωτους 6 χαρακτηρες καθε γραμμης και μονο αυτους και μετα να τους εκτυπωνει;;;

Εμενα μου κανει printf ολο το αρχειο... :hm:

Link to comment
Share on other sites

To σκισες... έχεις βάλει ένα loop του οποίου το control flow είναι char based, γιατί η συνθήκη σου είναι βασισμένη σε char και στο εσωτερικό του block προσπαθείς να χειριστείς streams... αυτό δεν είναι σωστό...

Πρέπει να αφαιρέσεις το while και να το κάνεις όπως εδώ....

Link to comment
Share on other sites

Ok αντικατεστησα τη λογικη συνθηκη της while με feof γιατι καπως πρεπει να περπαταει μεχρι το τελος του αρχειου...το παραδειγμα ηταν για την πρωτη μονο γραμμη...αυτο που με παραξενεψε ειναι οτι δοκιμασα με for για να κανω τη loop βημα βημα και μετα την εκτυπωση της επικεφαλλιδας PID συνεχισε στη ΤΤΥ ενω εγω θελω να συνεχισει απο κατω...

fp=fopen("PID.txt","r");
if (fp == NULL) perror ("Error opening file");
else
{
while(!feof(fp)){
fgets(PID,6,fp);
printf("%s",PID);
}
}

fclose (fp);

κανονικα δεν επρεπε να πηγαινει στην επομενη γραμμη η fgets?

Τhx επι ευκαριας και Χρονια Πολλα :T:

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Δημιουργία...

Important Information

Ο ιστότοπος theLab.gr χρησιμοποιεί cookies για να διασφαλίσει την καλύτερη εμπειρία σας κατά την περιήγηση. Μπορείτε να προσαρμόσετε τις ρυθμίσεις των cookies σας , διαφορετικά θα υποθέσουμε ότι είστε εντάξει για να συνεχίσετε.