2017-04-02 40 views
-3

用戶輸入:
string [0] =「My Address Street」;
string [1] =「我的街道地址」;
string [2] =「街道地址」;
最後輸入特定字符串 - c程序

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

我要讓用戶輸入Street只在最後一個字符串,而不是在中間或第一個字符串use strstr();

一些詭異的使用反向串,然後計數,直到滿足空間,然後扭轉回到正常和substring [ (string length - count), (string length) ]。然後將其與所需的輸入(輸入字符串末尾的'Street')進行比較。如果匹配 - >傳遞或循環直到匹配。

+0

如果通過'strstr'找到子字符串,則返回的指針將指向該子字符串。所以看看那個子字符串之後的字符,用'subptr [strlen(「Street」)]',並驗證它是nul字符串終止符還是換行符(如果輸入來自'fgets')。 –

+0

當給出「烏節路,街道」(英格蘭格拉斯頓伯裏附近的小鎮)時,你的算法會做什麼? –

回答

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開始,我會更多地瞭解這一點。 –