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,以此记录

猜你喜欢

转载自blog.csdn.net/lmx11040101/article/details/79615705
今日推荐