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

Προβληματάκι με διάβασμα λέξεων στην c


Brisingr

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

Δημοσ.

Έχω το εξής πρόβλημα...

Προσπαθώ να κάνω την exercise 1-12 από το βιβλίο του Ritchie , η οποία πρέπει να μετρά και να εμφανίζει τις λέξεις στο input.

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

Έχω γράψει λοιπόν αυτό

 

>#include <stdio.h>
#include <stdlib.h>
#define IN 1
#define OUT 0

main()
{
     int c, nw=0, state=OUT;
     while((c=getchar())!='\n'){
     if(c==' '||c=='\t') {
           state=OUT;
           printf("\n");}
     else {
           if (state==OUT){state=IN; ++nw;}
           else printf("%c", c);}
          }     
     printf("\n %d words total\n", nw);
     system("PAUSE");
     }

 

Το πρόβλημα είναι πως αν δώσω ως Input το εξής: grafw sto insomnia, το output είναι:

rafw

to

nsomnia

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

Δημοσ.

Καθόλου περίεργο. Απλώς δεν τυπώνεις τον χαρακτήρα !

 

Την πρώτη φορά που η εκτέλεση φτάνει στην γραμμή

{ state=IN; ++nw; }

αυξάνεται ο μετρητής nw για τις λέξεις, το STATE γίνεται IN και η εκτέλεση επιστρέφει στο while για την αναμονή του επόμενου χαρακτήρα.

Πού είναι η εκτύπωση του c ;

Την δεύτερη φορά και έπειτα, το STATE είναι ήδη IN και η εκτέλεση μεταφέρεται άμεσα στην

else printf("%c", c);}

όπου και εκτυπώνεται.

 

 

Tην γραμμή

{ state=IN; ++nw; }

 

κάνε την

{ state=IN; ++nw; printf("%c", c); }

 

και θα δουλέψει.

 

Καλημέρα....

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

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