|
发表于 2003-10-1 12:32:33
|
显示全部楼层
回复: strcpy问题,出现类型不匹配
最初由 edwardhayes 发表
设置:char req[8192];
*t3 = "HTTP/1.0";
想法:将t3加上一个空格,即"HTTP/1.0 "写入req中,使用strcpy()
写法:
- t3 = req;
- char t[] = " ";
- req = strcpy (req, t);
-
复制代码
错误:类型不匹配。
请帮忙看看。
为什么要在 t3 所指的字符串尾部追加空格呢,能讲一下用意吗?
*t3 = "HTTP/1.0"; 这是个语法错误。
*t 表示指针 t 所指的对象,就变成了给该对象的赋值语句。显然直接把字符串赋给某个对象在 c 还没有这种功能,需要用 strcpy 或 memcpy(c++ 倒有个 string 类可以实现)。我想这里你也不是这个意图。
正确应该是:
t3 = "HTTP/1.0";
表示让指针 t3 指向字符串 “Http/1.0" 的首地址。
或在定义指针 t3 时,用初始化语句:
char *t3 = "HTTP/1.0";
- t3 = req;
- char t[] = " ";
- req = strcpy (req, t);
复制代码
就更看不明白了。
t3 = req; 表示让指针 t3 指向数组 req, 即指向数组 req 的首个字符,而本来它是指向字符串 "HTTP/1.0" 的,你让它指向了不该指的对象。
下面的语句就毫无意义了。
正确的方法:
- #include <stdio.h>
- int main()
- {
- char req[8192];
- char *t3 = "HTTP/1.0 ";
- strcpy (req, t3);
- printf("%s\n", req);
- return 0;
- }
复制代码
或按你的要求:
- include <stdio.h>
- int main()
- {
- char req[8192];
- char *t3 = "HTTP/1.0";
- strcpy (req, t3);
- strcat (req," ");
- printf("%s\n", req);
- return 0;
- }
复制代码
或
- include <stdio.h>
- int main()
- {
- char req[8192];
- strcpy (req, "HTTP/1.0 ");
- printf("%s\n", req);
- return 0;
- }
复制代码
具体函数说明请看:
http://www.cplusplus.com/ref/cstring/index.html |
|