2016-04-05 10 views
0

Meine Aufgabe ist es, zu zählen, wie viele Zeichen in einer C-Zeichenfolge sind. Die Eingabe wird von einem Testtreiber bereitgestellt, auf den ich keinen Zugriff habe, aber meine Funktion soll auf die Daten zugreifen und bestimmen, wie viele Zeichen von az und AZ reichen, aber mein Programm versagt und ich bin mir nicht sicher, was ich bin falsch machen.Suche, wie viele Zeichen in einer C-Zeichenfolge sind

int countLetters(char * const line) 
{ 
    char index = *line; 
    int count; 

    while(!index) 
    { 
     if (index >= 'a' && index <= 'z') 
      count++; 

     if (index >= 'A' && index <= 'Z') 
      count++; 
    } 
    return count; 

} 

Antwort

0

Versuchen Sie, diese

int countLetters(char * const line) 
{ 
    int index = 0; 
    int count = 0; 

    while(line[index]) 
    { 
     if (line[index] >= 'a' && line[index] <= 'z') 
      count++; 

     if (line[index] >= 'A' && line[index] <= 'Z') 
      count++; 

     index++; 
    } 
    return count; 
} 

Hier ist, was Sie falsch gemacht haben
Erstens: ordnen Sie Ihre char index = * line; machen Ihren Index das erste Zeichen in der Zeichenfolge, die falsch ist, weil die Indexposition darzustellen annehmen, kein Charakter
Zweitens: Sie haben keinen Mechanismus bereitstellen, um den Index in anderer Schleife den String
Dritter zu erhöhen : Sie didnt Ihre Zählvariable initialisieren

Hinweis: line[index] ist die gleiche wie *(line + index)
Ihre line ist ein Zeiger, die auf dem ersten Zeichen in der Zeichenfolge
So line + index ist ein Zeiger,
Durch Präfix einen Zeiger mit einem in der Zeichenfolge an den Index-n-te Zeichen zeigen * Sie sagen, dass ich den Inhalt wissen wollen, dass dieser Zeiger Punkt

+0

> Versuchen initialisieren count = 0, bevor Sie es inkrementieren Versucht, dass und der Unterschied war anstelle von Tausenden von Treffern Ich habe 0 zurückgegeben. Ich bin mir nicht sicher, ob das Problem von dem Programm kommt, das das NULL-Zeichen fehlt, oder ob die Parameter in meinen if-Anweisungen falsch sind. Meistens ist mein Rückgabewert in den Tausenden, wenn es ~ 50 sein sollte – RyeMan

+0

Sie müssen irgendwie Ihren Index jede Schleife vergrößern – rocketspacer

+0

OK so perfekt, es funktioniert, aber aus irgendeinem Grund ist es -1 jedes Mal. Ich habe 'code'while (line (index ++) + 1))' code' geändert, was es behoben hat, aber ich verstehe nicht ganz, warum das passiert. – RyeMan

Verwandte Themen