提问人:Harry 提问时间:11/13/2023 最后编辑:πάντα ῥεῖHarry 更新时间:11/14/2023 访问量:106
Visual Studio 不支持 C 语言中的strcpy_s函数
Visual studio doesn't support strcpy_s function in C
问:
我是 C++ 的新手,目前使用 Visual Studio 进行编码。由于某种原因,我的不起作用strcpy_s()
#include<iostream>
#include<cstring>
int main(){
char a[]="Hello World!";
strcpy_s(a+6,"C++");
std::cout<<a;
}
该程序应打印“Hello C++”,但不会。
我尝试了其他编辑器(包括在线 C++ IDE),此问题已修复。有没有办法在Visual Studio中解决此问题?
谢谢!
答:
0赞
Minxin Yu - MSFT
11/14/2023
#1
strcpy_s需要dest_size。如果源字符串和目标字符串重叠,则未定义strcpy_s的行为。
#include<iostream>
int main() {
char a[] = "Hello World!";
strcpy_s(a + 6, strlen("C++")+1, "C++");
std::cout << a;
}
可能的输出: 你好 C++
另一种解决方案:
#include<iostream>
int main() {
char a[] = "Hello World!";
char b[20];
strncpy_s(b, sizeof(b), a, 6);
strcat_s(b, sizeof(b), "C++");
std::cout << b;
}
评论
0赞
Minxin Yu - MSFT
11/17/2023
嗨,你的问题@Harry解决?
评论
strcpy_s()
strcpy is depreceated, use strcpy_s instead
_s
strcpy
std::string