我对这个指针有意见。
我很确定有人能回答我的问题。。。

#include "stdafx.h"
#include <stdio.h>
#include <string.h>

int main()
{
    char str_a[20];
    char *pointer;
    char *pointer2;

    strcpy_s(str_a, "Dear World!\n");
    pointer = str_a;
    printf(pointer);

    pointer2 = pointer + 2;
    printf(pointer2);
    strcpy_s(pointer2, "idn't even notice!\n");
    printf(pointer);

    getchar();
    return 0;
}

我明白了
错误代码C2660
我能怎么办?

最佳答案

您需要更改strcpy_s呼叫以包括目的地大小

#include "stdafx.h"
#include <stdio.h>
#include <string.h>

int main()
{
    char str_a[20];
    char *pointer;
    char *pointer2;

    strcpy_s(str_a,sizeof(str_a), "Dear World!\n");
    pointer = str_a;
    printf(pointer);

    pointer2 = pointer + 2;
    printf(pointer2);
    strcpy_s(pointer2, sizeof(str_a) -2,("idn't even notice!\n");
    printf(pointer);

    getchar();
    return 0;
}

PS-你可以从我的评论中找到答案,我的评论指出了strcpy的文档

08-17 00:54