2010-03-30 66 views
1

匹配第一次出現我不知道我怎麼會在str1字符串匹配"Just"如果str1包含字符串爲:的strstr在C

"this is Just/1.1.249.4021 a test" 
// "Just" will always be the same 

我想它使用strstr但到目前爲止,贏得了」相匹配t因爲/...

有關如何匹配它的任何建議?謝謝

+0

這實際上編譯?看起來你有一個無效的字符串文字 - '\ 2323'不是有效的轉義碼AFAIK。 – EMP 2010-03-30 03:40:04

+1

@Evgeny:\ 2323是一個有效的八進制轉義\ 232後面跟着數字3. – 2010-03-30 03:44:03

+0

對不起,字符串應該是:Just/1.1.249.4021 – David78 2010-03-30 03:48:51

回答

2

這適用於我 - 你呢?

#include <string.h> 
#include <stdio.h> 
int main(void) 
{ 
    char haystack[] = "this is just\2323 a test"; 
    char needle[] = "just"; 
    char *loc = strstr(haystack, needle); 
    if (loc == 0) 
     printf("Did not find <<%s>> in <<%s>>\n", needle, haystack); 
    else 
     printf("Found <<%s>> in <<%s> at <<%s>>\n", needle, haystack, loc); 
    return(0); 
} 
+0

對不起,字符串應該是:Just/1.1.249.4021 – David78 2010-03-30 03:51:34

+0

C++標準說字符串文字的類型是「const char數組」,因此建議將它們聲明爲const char * – 2010-03-30 03:55:33

+3

@rep_movsd:yes,但是我沒有聲明任何字符串文字。我使用方便的初始化器來聲明兩個變量數組。當然,我可以讓它們成爲const;絕對沒有義務這樣做,如果我願意,我可以修改字符串(仔細地)。 – 2010-03-30 04:02:58

1

一定出事了你如何使用的strstr() 下面的代碼工作就好了... ...

const char *s = "this is just\2323 a test"; 
char *p = strstr(s, "just"); 
if(p) 
    printf("Found 'just' at index %d\n", (int)(p - s)); 
-1

如果字符串實際上是「剛/ 1.1.249.4021」,那麼它會未能找到「正義」,因爲strstr區分大小寫。如果您需要不區分大小寫的版本,則必須編寫您自己的或現有實現的Google