|
发表于 2003-8-31 23:20:26
|
显示全部楼层
用 strcpy 也成了。
- #include <stdio.h>
- #include <string.h>
- int main(void){
- char str1[] = "GET /index.html HTTP/1.1";
- printf ("str1: %s\n", str1);
- char *str2;
- str2 = strstr(str1,"index");
- printf ("str2: %s\n", str2);
- strcpy (str1, str2);
- printf ("str2: %s\n", str2);
- printf ("str1: %s\n", str1);
- str2 = strstr(str1," HTTP");
- printf ("str2: %s\n", str2);
- *str2 = '\0';
- printf ("str2: %s\n", str2);
- printf ("str1: %s\n", str1);
- return 1;
- }
复制代码
原来就是 char * str1 和 char str1[] 惹得祸。
仔细看了一下,结果很有意思。显然事先都知道只有 str1 这一组字符串,str2 是指向字符串中间某个字符的指针,来看看结果:
str1: GET /index.html HTTP/1.1
str2: index.html HTTP/1.1
str2: .html HTTP/1.1 // 用了 strcpy(str1,str2) 后的结果
str1: index.html HTTP/1.1
str2: HTTP/1.1
str2:
str1: index.html
看得出来,strcpy 以后,str2 也发生了变化,我想并不是 str2 指得位置变化了,而是 str1 中的字符向前移动了 5 个字符,str2 总是相对偏离 str1 5 个字符的位置。 |
|