我有從標準例如裝載有函數getline串的2D陣列:切割「 0」從字符串
Hi my name is John.
I like chocolate.
然後,我想如果輸入的字符串/子與串陣列示例的一個相匹配,以搜尋:
Ohn. - matches at line 1
chocolate. - matches at line 2
我使用的是非標準功能的strstr:
if ((strstr(array[i],string)) != NULL) {
printf("Match");
}
的問題是,當我想找到一個不在字符串末尾的字符串,就像我寫的,它不匹配,因爲可能當我想在字符串中找到「like」時,它可能與\「like」比較\ 0,所以它永遠不會匹配。 (緩衝區)-1然後我分配內存爲strlen(緩衝區) - 1 * sizeof(char),然後將它複製到與memcpy函數的數組。一切都工作正常,但是當字符串已經lenght 7-8它把2個未定義字符在字符串例子的末尾:
字符串與長度小於7或大於8個字符很好地工作。如果你知道如何解決這個問題或知道從字符串\ 0更好的方式只是字符串沒有\ 0讓我知道我會感激。
部分代碼不起作用。只匹配像我提到的wtith結尾字符串.Pole是字符串的二維數組,行是存儲字符串的緩衝區。
size_t len = 0;
char *line = NULL;
int number;
while ((number = getline(&line, &len, stdin)) != -1) {
for (i = 0; i < index; i++) {
if(strstr(pole[i], line) != NULL) {
printf("Match");
}
}
}
6
John.
'Hi my name is John.
' contain 'John.
'
'Testing stuff
' does not contain 'John.
'
'I do not know what to write
' does not contain 'John.
'
8
Testing
'Hi my name is John.
' does not contain 'Testing
'
'Testing stuff
' does not contain 'Testing
'
'I do not know what to write
' does not contain 'Testing
'
5
know
'Hi my name is John.
' does not contain 'know
'
'Testing stuff
' does not contain 'know
'
'I do not know what to write
' does not contain 'know
'
的字符串是一個數組以\ 0結尾的字符。如果它不以\ 0結尾,則不是字符串。此外,strstr不**計數\ 0。 – immibis
那麼你能告訴我爲什麼它不匹配所有的字符串或子字符串? – paxie
你可以用你寫的代碼片段編輯問題嗎? –