一:对字符串的 strlen() 与 sizeof
#include <string.h> #include <stdio.h> int main(void) { char* p="helo 163\n"; printf("strlen:%d sizeof: %d",strlen(p),sizeof(p)); }
输出:strlen:9 sizeof: 8
关于C字符的几种定义方法:http://hanxuedog.iteye.com/blog/1299186
关于sizeof和strlen()介绍:http://baike.baidu.com/link?url=JXd1hQfX4jLPzLfkKrOBkNSALUy4mF4Qu3BkhHowWhUseSu1WK8CD8FoZsZLgZ9kbqER1WetGbFCUdTBNzR_fq
int strlen(char *s)函数返回从内存位置s开始,直到碰到第一个字符串结束符'\0'为止的(不包括)字符的个数,编译器自动添加了‘\0’,strlen()结果没问题,换行符也算
sizeoff返回的是变量声明后所占的内存数,此外sizeof不是函数,仅仅是一个操作符.此例子中sizeof求得的是指针p这个变量所占的内存大小......指针类型在我的电脑占8个字节
#include <string.h> #include <stdio.h> int main(void) { char* p="helo 163\n"; printf("strlen:%d sizeof: %d\n",strlen(p),sizeof(p)); char* t; printf("sizeof(int):%d sizeof(char):%d sizeof指针:%d\n",sizeof(int),sizeof(char),sizeof(t)); printf("指针:%d\n",sizeof(void *)); }
害得我在smtp socket send() 时出大错啊!搞了一下午加晚上都没发现是这个的问题,原来发送时少换行符......难怪服务器半天没有发东西回来.....send()成功,我还以为recv()出错!