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

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

Δημοσ.

Έχω φτάσει ως εδώ:

#include <stdio.h>
#include <stdlib.h>

int wordcount (FILE *f);

int main()
{
    FILE *fp, *fout;
    
    int lexeis=0;
    
    fp = fopen("keimeno.txt", "r");
    fout = fopen("metritis.txt", "w");
     
    if (fp == NULL)
    {
       printf("File error\n");
       return 1;
    }  
    else
        printf("Search file success\n");

    if (fout == NULL)
    {
       printf("File error\n");
       return 1;
    }  
    else
        printf("Search file success\n");
        
    lexeis = wordcount(fp);       
    
    fprintf(fout, "Words : %d", lexeis);
    
    fclose(fp);
    fclose(fout);
    
    system("pause");
    return 0;   
}

 int wordcount (FILE *f)
 {
     int words = 0;
     char ch;         
     while((ch = fgetc(f)) != EOF)
     {
               if (ch == '\n')   
                         words++;  
     }                       
      return words;      
 }

Όμως στο metritis.txt  μου δείχνει "Words : 0".

Τι παρέλειψα;

 

Update:

 

άλλαξα το if (ch == '\n') σε if (ch == ' ') και φαίνεται να δουλεύει.

 

Όμως στο metritis.txt λέει πως οι λέξεις είναι 4 ενώ είναι 5 (μία λέξη είναι το a).

 

Update 2:

 

άλλαξα το int words = 0; σε int words = 1; γιατί αν στο keimeno.txt υπήρχε μία μόνο λέξη, δεν θα είχε κενό να διαβάσει. Δουλεύει.

Δημοσ.

Εσύ μετράς ουσιαστικά τα κενά μεταξύ των λέξεων που είναι όσα οι λέξεις - 1 (εφόσον δεν υπάρχει κενό μετά την τελευταία λέξη).

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

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

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

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

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

Σύνδεση

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

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