2017-02-18 2 views
-1

Bonjour les gars j'ai le code suivant, je ne comprends pas pourquoi dans la fonction "strcount" la dernière ligne n'affiche pas toute la chaîne une fois de plus? Merci d'avance!Après avoir compté les caractères du compteur?

#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

Le bon outil pour résoudre ces problèmes est votre débogueur. Vous devez parcourir votre code ligne par ligne * avant * de demander Stack Overflow. Pour plus d'aide, veuillez lire [Comment déboguer de petits programmes (par Eric Lippert)] (https://ericlippert.com/2014/03/05/how-to-debug-small-programs/). Au minimum, vous devriez [modifier] votre question pour inclure un exemple [Minimal, Complet et Vérifiable] (http://stackoverflow.com/help/mcve) qui reproduit votre problème, ainsi que les observations que vous avez faites dans le débogueur. –

+0

Pourquoi voudriez-vous que 'cout << str' imprime la chaîne d'origine? Vous réalisez que vous modifiez le pointeur 'str' dans la boucle' while', n'est-ce pas? –

+0

Je recommande d'utiliser 'std :: string' et' std :: getline' pour lire le texte de l'utilisateur. Beaucoup plus facile que de s'inquiéter de débordements de tableau ou de manquer le caractère de fin nul. –

Répondre

2

Dans la fonction strcount

while(*str++) 

incréments str jusqu'à la fin de la chaîne.

Ensuite, en essayant de sortie

cout << str << endl; 

affiche rien, comme str pointe maintenant à la fin de la chaîne.

+0

Je vous remercie tous pour l'aide, maintenant je comprends. – AndyE