[英]Search for string in char array
我正在嘗試在字符數組中搜索字符串,由此要識別的字符串是UCAST,並且字符數組如下:
analysis_buffer[0] = \n;
analysis_buffer[1] = U;
analysis_buffer[2] = C;
analysis_buffer[3] = A;
analysis_buffer[4] = S;
analysis_buffer[5] = T;
analysis_buffer[6] = \r;
我為嘗試搜索過程而執行的代碼如下:
constant char str[] = "UCAST";
char* pch = strstr(analysis_buffer,str);
if (pch!=NULL) {
printf("found at %d\n", pch - analysis_buffer + 1);
pch = strstr(pch+1, analysis_buffer);
} else {
printf("pch :%s\n", pch);
}
注意:analysis_buffer是我上面描述的數組。
我遇到的問題是,strstr位不為NULL。 有任何想法嗎?
我在stackoverflow上查看了以下鏈接以尋求幫助:
謝謝
代碼不正確,因為數組是初始化程序太短的一個元素:
char str[5] = "UCAST";
由於將隱式空字符添加到所有字符串文字中。 從6.4.5節開始, 字符串文字是C99標准的第5點:
在轉換階段7中,將零值的字節或代碼附加到由字符串文字或文字產生的每個多字節字符序列中。 ...
可能的修復:
允許扣除所需的數組大小:
char str[] = "UCAST";
使用const char*
,因為不需要修改str
:
const char* str = "UCAST";
請注意,要搜索的字符串(在這種情況下為analysis_buffer
)也必須以null結尾。 從發布的代碼來看,這顯然沒有發生。
此外,最終的printf()
語句不正確,因為格式說明符為%c
但參數( pch
)類型為char*
。 通常,要么使用%s
並使用pch
要么使用%c
和*pch
BUT if
此分支中pch
為NULL
,則不能在printf()
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.