C语言strcpy(a,b)函数若b没有空字符那么复制过去a有空字符吗

大哥,请教一下,C语言strcpy(a,b)函数若b没有空字符那么复制过去a有空字符吗
最新回答
信人远游

2024-12-02 11:06:38

也没有的。如果b没有结束标记,那么复制的时候将会把b后面的(不属于b)的字符一起复制到a里面,直到放不下为止
追问
什么叫后面不属于b的字符,能举个例子吗
追答
数组在内存里都是分配一个连续的空间,也就是有开始和结束地址的,字符串的末尾有空字符作结束标记,所有处理字符串的函数都要检查这个标记以确定字符串是否结束了,如果没有找到标记,那么就继续读取后面的字符,而不管这些字符是否属于本数组,这样就可能把数组b后面(外面)的内容赋给了数组a
和快乐签约

2024-12-02 06:07:11

strcpy是复制到'\0'为止的,所以如果b本身没有'\0',就继续赋值后续内存内容,直到遇到'\0',不管第一个参数指针指向的空间是否足够大,所以strcpy并不安全
追问
什么叫赋值后续内存内容
杯别

2024-12-02 04:45:50

trcpy是复制到'0',不管第一个参数指针指向的空间是否足够大;\0'为止的,所以如果b本身没有'\,就继续赋值后续内存内容,直到遇到'\0'
再看看别人怎么说的。