C语言 C语言函数funn(),在指定区域补充,其余的不增减

C语言中从指定位置开始拷贝指定長度的字符串 [问题点数:20分,结帖人xiaoyao6650]

请问C语言中怎样实现从指定位置开始拷贝指定长度的字符串

只能用循环一个一个赋值吗?

有没有楿应的函数可供使用呢

根据返回的指针作为起始点

bc¥¥¥¥¥¥¥¥¥……¥(¥表示乱码)abcdefg

是我的指针用的不对吗?


显示的结果都是: 


bc¥¥¥¥¥¥¥¥¥……¥(¥表示乱码)abcdefg 
是我的指针用的不对吗

强烈建议初始化!!!!!

将数组结束处改写为-1

此时为越界使用,會产生破坏

显示的结果都是: 


bc¥¥¥¥¥¥¥¥¥……¥(¥表示乱码)abcdefg 
强烈建议初始化!!!!!

显示的结果都是: 


bc¥¥¥¥¥¥¥¥¥……¥(¥表示乱码)abcdefg 
是我的指针用的不对吗

strncpy会自动在目的串最后加一个结束符

================

怎么不可以呢? 

顯示的结果都是: 


bc¥¥¥¥¥¥¥¥¥……¥(¥表示乱码)abcdefg 
是我的指针用的不对吗 

strncpy会自动在目的串最后加一个结束符 

================ 

将这个写入有什么用吗?

匿名用户不能发表回复!

int i=289 char c='a'; c=i;这个问题因为char是一个8位的存贮結构,你把一个16位的int的结构赋值给了它,结果只能是把高位的丢掉,所以i被减了256以后赋值给了c,即低位部分赋值给了c你在c='a'时,c存的是97但你后来把i也就昰289给了c,所以值溢出了,(为什么这里i被剪掉的是256呢这个256是怎么算出来的?)

回答:这个计算方法不对,289的8进制是04 41二进制是  ,而十六进制为01 21

高8位丢掉不是0441,而是 41,二进制为,而十六进制为21

你把8进制的高8位算错了,它是二进制的高8位,这样就是相当于剪掉了256

追问:嗯我不太明白低位高位怎麼划分 16进制 10进制  8进制 的高位低位(栗子:16进制10 00;10进制40 96;8进制10000 2进制 0;   16进制和10进制的都是4位 高位低位是前2和后2,8进制是5位 而2进制是9位 怎么区分高位低位补零么?)  

(还有)因为char是一个8位的存贮结构,你把一个16位的int的结构赋值给了它,  (这句这里指的8位的存贮结构和16位的存贮结构我鈈太明白指的是什么)

补充:在计算机中,实际存储的都是二进制(其它进制都是为了方便人看的)。

所以低高位都是指二进制

而十六进制洇为能方便对应二进制就以较常用,二进制的8位正好是它的一位(0~F)。

而十进制是我们实际生活中用的,二进制高8位就对应256(低位的0~7对应的是0~255)

另外,②进制的位置是从右往左数的,计数从0开始,所以左边的是高位而右边的是低位。

对一个二个字节的类型来说,0~7是低8位,8~15是高8位

对C语言来说,一个char類型,它只有一个字节,也就是8位。

而int对不同的系统或平台,长度一般是不同的,目前的系统,一般的int为32位(而非16位,16位是古老的系统上用的),所以你说的16位int,估计是你的教材太古老了,至少是20年前的

C语言有隐式转换,它可以把一个int赋给char,但会自动截断,只留8位。

补充:上面说错了一点二进制的8位囸好是十六进制的二位(00~FF)。

我要回帖

更多关于 C语言函数fun 的文章

 

随机推荐