2017-04-02 21 views
-3

ユーザー入力:
string [0] = "My Address Street";
string [1] = "My Street Address";
string [2] = "住所";
最後に特定の文字列を入力します。

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

私はしません途中または最初の文字列use strstr();で、唯一の最後の文字列で、ユーザの入力Streetを作りたいです。

逆の文字列を使用してトリックを行い、スペースを満たすまでカウントしてから、通常の状態に戻してsubstring [ (string length - count), (string length) ]に戻します。そしてそれを必要な入力(入力された文字列の最後に'Street')と比較してください。 match - >合格するまで渡すか、またはループする。

+0

'strstr'によって部分文字列が見つかった場合、返されるポインタはその部分文字列を指します。 'subptr [strlen(" Street ")]'と言って、その部分文字列の直後の文字を見て、それがヌル文字列終端文字か改行(入力が 'fgets'からのものだった場合)であることを確認してください。 –

+0

"Orchard Road、Street"(Glastonbury、Englandに近い町)を指定すると、あなたのアルゴリズムは何をしますか? –

答えて

0

ありがとう、私はこれを使用します。

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

[何にでも 'gets()'を使わないでください(http://stackoverflow.com/questions/1694036/why-is-the-gets-function-so-dangerous-that-it-should-not-利用される)。これは危険な関数で、C99では廃止され、C11では完全に削除されています。代わりに 'fgets()'やPOSIX 'getline()'を使用してください。 –

+0

ありがとう、私はちょうどCで始まります、私はそれについてもっと学びます。 –

関連する問題