strstr(str1,str2)的地址空間問題

strstr(str1,str2) 函數用於判斷字符串str2是否是str1的子串。如果是,則該函數返回str2在str1中首次出現的地址;否則,返回NULL

char* m_Read_Buffer = "start = //http:www.baidu.com23333";

char* p = NULL;

char* q = NULL;

p = strstr(m_Read_Buffer, "start = ");

printf("first p :%s\r\n", p);

q = strstr(m_Read_Buffer, "23333");//delete 23333

if(q)

{

    *q = '\0';

    printf("second p:%s\r\n", p);

}

結果:first p: //http:www.baidu.com23333

          second p://http:www.baidu.com

所以p,q,m_Read_Buffer指向的是同一地址空間,q指向的2333改爲‘\0’後,m_Read_Buffer也變了(start = //http:www.baidu.com),q也跟着變了(//http:www.baidu.com),遇見的一個Bug,以此記錄

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章