2017-02-09 2 views
0

Die Datei, die ich las, hatte die Zeichenfolge "Hallo", das war alles. Es gab keine Fehler und das Programm sagte "Sie haben 135197296 E's", was offensichtlich falsch ist. Ich bin hier ratlos. Ich bin neu in C++ und es sah so aus, als wäre es ein lustiges und einfaches Programm ... Ich lag falsch.C++ Zähler funktioniert nicht

Ich weiß nicht, ob es wichtig ist, aber das fertige Programm sollte in der Lage sein, eine vom Benutzer bereitgestellte Datei zu öffnen, die Datei zu lesen und die Häufigkeiten von Buchstaben in eine separate Datei zu schreiben. Offensichtlich habe ich noch nicht da bekommen und ich frage nur, um Hilfe zu diesem Bit :)

int main() { 
    string filenamein, filenameout; 
    char character; 
    ifstream fileC; 
    int tletter, eletter; 

    cout << "which file do you want to open?"; 
    cin >> filenamein; 

    fileC.open(filenamein.c_str()); 
    if (fileC) 
    { 
     while (fileC) 
     { 
      fileC.get(character); 
      char e, E; 
      if (character == 'e'|| character == 'E') 
      { 
       eletter++; 
      } 
     } 
    } 

    cout<< "You have " << eletter <<" E's"; 
    fileC.close(); 

    return 0; 
} 
+1

Sie konnten Ihre Zähler nicht auf 0 initialisieren. –

Antwort

0

In C++ primitive Variablen wie int werden nicht initialisiert, wenn Sie sie explizit initialisieren. Dies wäre im Allgemeinen ineffizient, da manchmal der erste Wert, den eine Variable bei der Deklaration annehmen soll, nicht bekannt ist, und daher wäre es eine redundante Schreiboperation, sie beispielsweise auf 0 zu initialisieren. Wenn Sie möchten, dass eletter bei 0 startet, müssen Sie so etwas tun.

int eletter = 0; 

So zählen Sie von 0. Wenn Sie es nicht initialisieren, ist der Anfangswert, was auch immer 4 B von Mülldaten an diesem Speicherort des RAM Ihres Computers sein mögen, wenn Sie den Speicher zuweisen, der in diesem Fall ungefähr 135 Millionen betrug.