小编use*_*891的帖子

dest缓冲区小于src缓冲区时的strcpy

我试图了解strcpy和strncpy的区别/缺点.有人可以帮忙:

void main()
{
char src[] = "this is a long string";
char dest[5];

strcpy(dest,src) ;
printf("%s \n", dest);
printf("%s \n", src);

}
Run Code Online (Sandbox Code Playgroud)

输出是:

this is a long string 
a long string 
Run Code Online (Sandbox Code Playgroud)

问题:我不明白,源sting是如何被修改的.根据解释,strcpy应该继续复制,直到它遇到'\ 0',所以它确实如此,但为什么"src"字符串被修改.

请解释.

c string buffer-overflow strcpy

5
推荐指数
2
解决办法
1万
查看次数

请用C中的字符数组/字符串解释这种行为

当我尝试某事时(我只是为了理解),我得到了这个.请解释一下这种行为:


第一次尝试:

void main()    
{  
    char src[] = "vinay";
    int i;
    // char name[5] = "test";
    char *name=  "abcde";
    printf("%s \n", name);
    if (*(name+5) == '\0')
        printf("6th char is null\n");
    strcpy(name,src);
    printf("printcheck \n");
    for (i=0 ; i <6 ; i++)  
    {
        printf("%c \n", *(name+i));
    }
    printf("%s \n",name);    
}
Run Code Online (Sandbox Code Playgroud)

输出:

abcde 
6th char is null
zsh: 16644 segmentation fault (core dumped)  a.out
Run Code Online (Sandbox Code Playgroud)

第二次尝试:

void main()
{
    char src[] = "vinay";
    int i;
    char name[] = "pqrst";
    //char *name=  "abcde";
    printf("%s \n", …
Run Code Online (Sandbox Code Playgroud)

c string character-arrays

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

有关取消引用结构指针的问题

我正在编译这段代码,我得到编译错误,说"解除指向不完整类型的指针".我得到了最后一个print语句的错误,在此之前我尝试指向(*temp).num到b的地址

void main()
{

    struct {
        int xx;
        char *y;
        int * num;
        struct x *next;
    }x;

    struct x* temp;
    int b = 10;

    temp = ((struct x *)malloc(sizeof(x)));

    (*temp).num = &b;

    x.next = temp ;

    printf(" %d\n",temp->num, x.next->num);

}
Run Code Online (Sandbox Code Playgroud)

c pointers structure dereference

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