2017-02-18 5 views
-1

Hallo Leute Ich habe den folgenden Code, ich verstehe nicht, warum in der Funktion "strcount" die letzte Zeile nicht die ganze Zeichenfolge noch einmal anzeigt? Vielen Dank im Voraus!Nach dem Zählen Zeichen Zähler stecken?

#include <iostream> 
const int ArSize = 10; 
void strcount(const char * str); 

int main() 
{ 
    using namespace std; 
    char input[ArSize]; 
    char next; 

    cout << "Enter a line:\n"; 
    cin.get(input, ArSize); 
    while(cin) 
    { 
     cin.get(next); 
     while(next != '\n') 
      cin.get(next); 
     strcount(input); 
     cout << "Enter next line (empty line to quit):\n"; 
     cin.get(input, ArSize); 
    } 
    void strcount(const char * str) 
    { 
     using namespace std; 
     static int total = 0; 
     int count = 0; 

     cout << "\"" << str <<"\" contains "; 
     while(*str++) 
      count++; 
     total += count; 
     cout << count << " characters\n"; 
     cout << total << " characters total\n" << endl; 
     cout << str << endl; 
    } 
+1

Das richtige Werkzeug, um solche Probleme zu lösen, ist Ihr Debugger. Sie sollten Schritt für Schritt durch Ihren Code * gehen, bevor Sie auf Stack Overflow nachfragen. Für weitere Hilfe lesen Sie bitte [Wie kleine Programme zu debuggen (von Eric Lippert)] (https://ericlippert.com/2014/03/05/how-to-debug-small-programs/). Zumindest sollten Sie Ihre Frage bearbeiten, um ein [minimales, vollständiges und verifizierbares] (http://stackoverflow.com/help/mcve) Beispiel einzufügen, das Ihr Problem zusammen mit den Beobachtungen, die Sie in der Debugger. –

+0

Warum sollten Sie erwarten, dass 'cout << str 'die ursprüngliche Zeichenkette ausgibt? Sie erkennen, dass Sie den 'str'-Zeiger in der' while' Schleife ändern, richtig? –

+0

Ich empfehle die Verwendung von 'std :: string' und' std :: getline' zum Lesen von Text vom Benutzer. Viel einfacher als sich Gedanken über Array-Überläufe oder das Fehlen des abschließenden Zeichens zu machen. –

Antwort

2

In der Funktion strcount

while(*str++) 

Schritte str, bis Sie das Ende der Schnur erreichen.

versucht dann zur Ausgabe

cout << str << endl; 

wird nichts angezeigt, wie str nun bis zum Ende des Strings verweist.

+0

Ich danke Ihnen allen für die Hilfe, jetzt bekomme ich es. – AndyE

Verwandte Themen