2017-04-02 3 views
-3

Benutzereingabe:
string [0] = "Meine Adresse Straße";
string [1] = "Meine Straßenadresse";
string [2] = "Straßenadresse"; nur bei der letzten Zeichenfolge, nicht in der Mitte oder im ersten String use strstr();
Geben Sie zuletzt eine spezifische Zeichenfolge ein - c program

strstr(string[i]," Street") 
// return 0 for string[2], because there is no whitespace before `Street` word 

Ich mag Street Benutzereingaben machen.

ein Trick mit umgekehrter Zeichenfolge, dann zählen, bis der Platz gefunden wurde, dann zurück zum normalen und substring [ (string length - count), (string length) ]. Und dann vergleichen Sie es mit der erforderlichen Eingabe ('Street' am Ende der eingegebenen Zeichenfolge). if match -> pass oder looping bis zur Übereinstimmung.

+0

Wenn der Teilstring von 'strstr' gefunden wird, zeigt der zurückgegebene Zeiger auf diesen Teilstring. Schauen Sie sich das Zeichen direkt hinter dem Teilstring an, sagen Sie 'subptr [strlen (" Street ")]' 'und vergewissern Sie sich, dass es sich um den Nullstring-Terminator oder den Zeilenumbruch handelt (wenn die Eingabe von' fgets' stammt). –

+0

Was würde Ihr Algorithmus tun, wenn "Orchard Road, Street" (eine Stadt in der Nähe von Glastonbury, England) gegeben wird? –

Antwort

0

danke, ich benutze dies.

char address[50]; 
do{ 
    printf("> "); 
    scanf("%[^\n]",address); 
}while(strstr(address," Street")==0 || strstr(address,"Street ")!=0); 
/* user input: 
> Orchard Road   
> Street    
> Street Orchad Road 
> Orchad Street Road 
> Orchad Road, Street 
*/ 
+0

[Sie sollten nicht _ever_ verwenden 'gets()' für irgendetwas] (http://stackoverflow.com/questions/1694036/why-is-the-gets-function-so-dangerous-that-it-should-not- verwendet werden). Es ist eine gefährliche Funktion, in C99 veraltet und vollständig von der Sprache in C11 entfernt. Verwenden Sie stattdessen 'fgets()' oder die POSIX 'getline()'. –

+0

danke, ich beginne gerade in c, ich werde mehr darüber erfahren. –

Verwandte Themen