Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ. (επεξεργασμένο)

Εχω δημιουργήσει αυτό το κώδικα ο οποίος μετρά τις λέξεις!Για κάποιο λόγο όμως δεν εμφανίζει τα αστεράκια κάτι το οποίο είναι λάθος στον κώδικα.Μονο που δεν το βρίσκω!!!

 

 
  void printfreq(int arr[N],int *c,int *w,int *sum)
{
     FILE *fout;
     int i,size;
     fout=fopen("file2.txt","w");
     fprintf(fout,"The frequency of characters is:\n");
     for(i=0;i<N;i=i+1)
     {
         if(arr!=0)
              {
                fprintf(fout,"%c:%d \n",i+'a',arr);
                printstars(arr);
              }
     }
fprintf(fout,",:%d",*w);
printstars(*w);
fprintf(fout,"\n.:%d",*c);
printstars(*c);
fprintf(fout,"\nTotal number of characters in file: %d ",*sum);
fclose(fout);
}
 
 
void printstars(int size)
{
  FILE *fout;
  int i;
  fout=fopen("file2.txt","w");
  for(i=0;i<size;i=i+1)
  fprintf(fout,"*");
  fprintf(fout,"\n");
  fclose(fout);
}
 
 
 
 

Ευχαριστώ εκ των προτέρων..

file1.txt

Επεξ/σία από Nananeison
Δημοσ.

Επειδή δεν μπορω να το δω αναλυτικά τώρα, το πρώτο που βλέπω, είναι οτι ενω έχεις ήδη ανοίξει το αρχείο στην printfreq, καλείς απο εκεί μεσα την printstars και ξαναανοίγεις το αρχείο... Μπορείς να αλλάξεις την prinstars ώστε να παίρνει σαν ορισμα τον FILE* του αρχέιου που έχεις ανοίξει μέσα στην printfreq και να τον χρησιμοποιείς για να τυπώσεις μεσα στο ήδη ανοιχτό αρχείο.

 

Φαντάζομαι οτι έχεις ελέγξει τις τιμές που έχει ο arr[] και δεν ειναι μηδενικές...

Δημοσ.

Επειδή δεν μπορω να το δω αναλυτικά τώρα, το πρώτο που βλέπω, είναι οτι ενω έχεις ήδη ανοίξει το αρχείο στην printfreq, καλείς απο εκεί μεσα την printstars και ξαναανοίγεις το αρχείο... Μπορείς να αλλάξεις την prinstars ώστε να παίρνει σαν ορισμα τον FILE* του αρχέιου που έχεις ανοίξει μέσα στην printfreq και να τον χρησιμοποιείς για να τυπώσεις μεσα στο ήδη ανοιχτό αρχείο.

 

Φαντάζομαι οτι έχεις ελέγξει τις τιμές που έχει ο arr[] και δεν ειναι μηδενικές...

το ξέρω οτι την καλώ ξανά απλα οσες φορές προσπάθησα να δηλώσω την FILE διαφορετικά(px κατω απο το include) επειδη για να τυπώσω στο αρχείο το αστεράκι χρησιμοποιούσα την fout ο builder μου έβγαζε πρόβλημα οτι στην printstars δεν έχει οριστεί η fout.

 

σαν όρισμα πως?

 

ναι οι τιμές που έχει ο arr[] δεν είναι μηδενικές και εμφανίζονται κανονικά δίπλα από το κάθε γράμμα όπως έχω ορίσει.τα αστεράκια δεν λενε να βγουν με τιποτα ομως 

Δημοσ.

Κανε την printstars κάπως έτσι:

void printstars(int size, FILE* fout)
{
    int i;
    for(i=0;i<size;i=i+1)
         fprintf(fout,"*");
    fprintf(fout,"\n");
}
κάλεσέ την από την printfreq ως εξής:

...
printstars(arr[i], fout);
...
printstars(*w, fout);
...
printstars(*c, fout);
...

edit

Επίσης στην readcount δεν χρειάζεται να ανοιγεις και να κλείνεις το file2.txt απο τη στιγμή που δεν το χρησιμοποιείς πουθενά εκεί μέσα...

Δημοσ.

ΣΕ ΕΥΧΑΡΙΣΤΩ ΑΠΕΙΡΑ για τις διορθώσεις σου...δεν φανταζεσαι ποσο με ταλαιπωρησε αυτο το με τα αστεράκια!ουτε πόσο χαρούμενη με έκανες αυτη την στιγμή!είχα και κάτι άλλα μικρολαθάκια στον κώδικα αλλα τα διορθωσα και αυτα και ολα μια χαρά!!

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...