sizeof strlen strncpy

sizeof测类型(数组名除外) strlen测实际长度 strncpy返回指针类型

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <string.h>
 4 int main()
 5 {
 6     char *p="wangddd";
 7     printf("%d\n",sizeof(p));//输出4,指针类型
 8
 9     char x[8];
10     printf("%d\n",sizeof(x));//输出8,所占内存数
11
12     printf("%s\n",strncpy(x,"wangddddd",sizeof(x)));//返回x指针,正常显示前7位
13     //strncpy返回值是一个指针x
14     printf("%d\n",sizeof(strncpy(x,"wangddddd",sizeof(x))));//输出4
15     printf("%d\n",strlen(strncpy(x,"jskjksjdf",sizeof(x))));//随机 取决于编译环境
16     printf("%d\n",strlen(strncpy(x,"jskjkse",sizeof(x))));//输出7
17
18     char y[5]="w c";
19     printf("%d\n",strlen(y));//输出3
20     printf("%d\n",sizeof(y));//输出5
21
22     return 0;
23 }
时间: 2024-10-08 23:43:38

sizeof strlen strncpy的相关文章

sizeof/strlen/length

1.sizeof() sizeof(...)是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组.指针.类型.对象.函数等. 它的功能是:获得保证能容纳实现所建立的最大对象的字节大小. 由于在编译时计算,因此sizeof不能用来返回动态分配的内存空间的大小.实际上,用sizeof来返回类型以及静态分配的对象.结构或数组所占的空间,返回值跟对象.结构.数组所存储的内容没有关系. 具体而言,当参数分别如下时,sizeof返回的值表示的含义如下: 数组—

sizeof &amp;&amp; strlen 的区别

本文主要记录了 sizeof 操作符 和 strlen() 函数的区别,以及各自的用途.(在下才疏学浅,发现错误,还请留言指正) sizeof 和 strlen 的区别 示例代码如下: #include<stdio.h> int main() { char str[20]="0123456789"; printf("strlen(str)==%d\n",strlen(str));//计算字符串的长度(不包括0x00),结果:10 printf("

sizeof, strlen区别

strlen与sizeof的区别 1.sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型. 该类型保证能容纳实现所建立的最大对象的字节大小. 2.sizeof是算符,strlen是函数. 3.sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以''\0''结尾的. 4.数组做sizeof的参数不退化,传递给strlen就退化为指针了. 5.大部分编译程序在编译的时候就把sizeof计算过了 是类型或是变量的长度这就是siz

sizeof strlen 详解

详解sizeof和strlen 1 说明sizeof和strlen之间的区别 (1)sizeof操作符的结果类型是size_t,它在头文件中的typedef为unsinged int类型.该类型保证     能容纳实现所建立的最大对象的字节大小. (2)sizeof是算符,strlen是函数. (3)sizeof可以用类型作参数,sizeof还可以用函数作参数. strlen只能用char*作参数,且必须是以'\0'结尾的.比如: short f(); printf("%d\n",si

转移字符----sizeof &amp; strlen

在定义了数组大小时: sizeof是运算符,表示编译时分配的空间大小,即数组定义的大小,char t[20] = "sfa".sizeof: 20; strlen: 3.在未定义数组大小时: sizeof根据实际位数确定,注意字符串隐藏的\0也算一位.char s[] = "a\128\\\tcb\xdg\n";sizeof计算s大小时,为11位:a \12 8 \\ \t c b \xd g \n \0strlen计算s大小时,为10位:strlen计算字符串长度

strlen函数细节

strlen所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符'\0'为止,然后返回计数器值. 原型: extern unsigned int strlen(char *s); 在Visual C++ 6.0中,原型为size_tstrlen(const char *string); ,其中size_t实际上是unsigned int,在VC6.0中可以看到这样的代码:typedef unsigned

c开源项目webbench学习

webbench是用c语言来实现的网站压力测试工具,可以并发产生3万个链接测试网站.在学习webbench时候最好先简单了解一下http协议,推荐小日本的一本书<图解http>,适合入门,图文并茂,先简单介绍下wenbench的使用方法,在ubuntu14.04上安装完后,执行: [email protected]:webbench-1.5# webbench  webbench [option]... URL   -f|--force               Don't wait for

ETL应用:一种处理接口的Pro*C实现方法

2007年,当时项目所有ETL采用C编写,实现了ETL基本功能.当接口很多时,为保证文件获取效率,做好接口可配置:文件维护中经常会出现接口晚到情况,需要有一种方法能将接口晚到信息写入数据库,便于短信告警.当时刚学习Pro*C不久,就实现了该方法, 如下 #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> #include <time.h> #

Theme Section---hdu4763(kmp, Next数组的运用)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4763 题意就是求s串中满足EAEBE格式的E的最大长度:我们可以枚举前缀和后缀的所有匹配(k)看是否在s[k,len-k]中; 如果不在它中间那么就让k=Next[k],刚开始想的是k--:但是这样循环次数有点多(本题数据太水,k--也能过): 但是s[0,k-1]和s[len-k-1,len-1]不一定一样啊,如果是Next[k]的话那么前缀Next,即前缀的前缀和后缀肯定相等并且等于后缀的后缀(