我是c / c ++的新手,当我遇到this.时,我试图确定终止字符串的最佳方法
我想我明白了增加指针并将其解除引用值为' \ 0'的情况。问题是,当我这样做时,它无法正常工作。
int main()
{
const char* c = "1234567890";
char* c1 = (char*) malloc(sizeof(char)*4);
strncpy( c1, c, 3 );
printf( "%s\n",c1 );
*c1++ = '\0';
printf( "%s\n",c1 );
}
输出是 123 23
似乎在字符串的开头删除了null值,而不是紧跟在字符串的后面。为什么呢?
答案 0 :(得分:1)
这一行:
*c1++ = '\0';
确实
评估变量c1
。它是指向4字节分配块的指针。
使用*
取消引用指针,c1
现在是'\0'
指向的第一个字节。
将值'1'
分配给该字节,覆盖那里的c1
。
将{1}添加到'2'
。现在它指向您分配的4个字节的第二个字节,其中包含c1
。
稍后,当您将2
打印为字符串时,它会从您离开它的'\0'
处开始,并以恰好位于最后一个字节的终止@keyframes slide {
0% {
opacity: 0;
-webkit-transform: translateX(70%);
}
100% {
opacity: 1;
-webkit-transform: translateX(0%);
}
}
@-webkit-keyframes slide {
0% {
opacity: 0;
-webkit-transform: translateX(70%);
}
100% {
opacity: 1;
-webkit-transform: translateX(0%);
}
}
结束您分配的区域从未设置过。