小编cra*_*cot的帖子

为什么我的源在c中使用strcpy时会发生变化

使用strcpy源后,损坏并获得正确的目标.以下是我的代码请告诉我为什么我的源代码被破坏了?如果我将第二个字符数组q []保持固定大小,那么我的源码不会被更改.为什么这种奇怪的行为.-
我正在使用MSVC 2005

void function(char* str1,char* str2);
void main()
{

    char p[]="Hello world";
    char q[]="";
    function(p,q);
    cout<<"after function calling..."<<endl;
    cout<<"string1:"<<"\t"<<p<<endl;
    cout<<"string2:"<<"\t"<<q<<endl;
    cin.get();
}

void function(char* str1, char* str2)
{
    strcpy(str2,str1);
}
Run Code Online (Sandbox Code Playgroud)

OUTPUT:

after function calling...
string1:        ld
string2:        Hello world
Run Code Online (Sandbox Code Playgroud)

提前
谢谢马拉蒂

c c++ strcpy

2
推荐指数
2
解决办法
2045
查看次数

析构函数会被调用吗?

如果我创建向量向量的向量,如果我清除第一个向量,或者第一个向量被删除,所有子向量是否会调用析构函数并释放内存或者是否会导致内存泄漏?谢谢

c++ vector

1
推荐指数
1
解决办法
254
查看次数

从Hex获取LSB的值(C代码)

我在C中有这样的代码:

unsigned char const data[ ] = {0x0a, 0x1d, 0xf0, 0x07};
Run Code Online (Sandbox Code Playgroud)

我需要提取它,使得最终值为:

0xa1df7
Run Code Online (Sandbox Code Playgroud)

如果十六进制值至少为零,我只能提取并使其工作:

unsigned char const data[ ] = {0x0a, 0xd0, 0xf0, 0x07};
Run Code Online (Sandbox Code Playgroud)

使用以下代码:

for(int i = 0; i < SIZE; ++i)
{
    tmp = data[i];
    if ( (data[i] <= 0x0F) &&  (((data[i] & 0x0F) == 0) || (data[i] & 0xF0) == 0)) // one of the hex is zero
    {
        tmp = ((tmp << 4) >> 4) << N[i];
        std::cout << "foo: " << std::hex << tmp << …
Run Code Online (Sandbox Code Playgroud)

c c++ bit-manipulation bit-shift

0
推荐指数
1
解决办法
1736
查看次数

标签 统计

c++ ×3

c ×2

bit-manipulation ×1

bit-shift ×1

strcpy ×1

vector ×1