2010-12-31 12 views
0
#include <stdio.h> 

    #define IN 1 /* inside a word */ 
    #define OUT 0 /* outside a word */ 

    /* count lines, words, and characters in input */ 
    main() 
    { 
     int c, nl, nw, nc, state; 

     state = OUT; 
     nl = nw = nc = 0; 
     while ((c = getchar()) != EOF) { 
      ++nc; 
      if (c == '\n') 
       ++nl; 
      if (c == ' ' || c == '\n' || c = '\t') 
       state = OUT; 
      else if (state == OUT) { 
       state = IN; 
       ++nw; 
      } 
     } 
     printf("%d %d %d\n", nl, nw, nc); 
    } 

Ich habe K & R Buch, aber es gibt einige Codes, die nicht kompilieren!C: Code unten kann nicht kompiliert werden?

es gibt mir - 19 C: \ Benutzer \ Nom \ Desktop \ Untitled1.c ungültig lvalue in Zuordnung


edit: jetzt funktioniert es, Danke Jungs, aber jetzt tut es nichts! Die printf-Anweisung funktioniert nicht. Es öffnet die Dos-Konsole, ich gebe alles ein und es wird nur eine neue Zeile zurückgegeben. Ich benutze Dev-C++ 4.9.9.2


edit: Ich habe die printf-Anweisung innerhalb der while-Schleife und es funktioniert jetzt. Dank

+0

sein vielleicht sollte dies ein == "c werden sollte = '\ t' " – kenny

+2

Auch' main' sollte einen Rückgabetyp von 'int' haben. – Falmarri

+3

Ob Sie es glauben oder nicht, diese Fehlermeldungen, die der Compiler gibt, sind aus einem bestimmten Grund da. In diesem Fall wird eine Zuweisung in einer Zeile erwähnt, die keine Zuweisung haben soll. Also solltest du dir diese Zeile ansehen, um zu sehen, ob es etwas gibt, das sich in eine Aufgabe verwandeln könnte, wenn du etwas falsch liegst. –

Antwort

6

In if (c == ' ' || c == '\n' || c = '\t') der letzte = wahrscheinlich ==

+0

danke, jetzt kompiliert es aber tut nichts! Die printf-Anweisung funktioniert nicht. Es öffnet die Dos-Konsole, ich gebe alles ein und es wird nur eine neue Zeile zurückgegeben. – heshim

+2

@heshim: Geben Sie Zeug, dann senden Sie ein EOF. Ich denke, das ist Strg + Z unter Windows ... K & R ist sehr Unix-zentriert. – nmichaels

+0

Sie durchlaufen eine Schleife, bis Sie EOF eingeben, was in C ist ctrl-d –

2
 if (c == ' ' || c == '\n' || c = '\t') 

Sie eine = in der letzten oder Klausel fehlt, sollte

 if (c == ' ' || c == '\n' || c == '\t') 
             ^^ here 
+0

danke, jetzt kompiliert es, tut aber nichts! Die printf-Anweisung funktioniert nicht. Es öffnet die Dos-Konsole, ich gebe alles ein und es wird nur eine neue Zeile zurückgegeben. – heshim

+0

Wenn Sie die akzeptierte Antwort upvoten, sollten Sie auch diese aufheben. Wir haben praktisch zur gleichen Zeit die gleiche Antwort gefunden. Fair ist fair. – RobertB

+0

Kein biggie so oder so. –

Verwandte Themen