Code C++ không thể dùng strcpy trong VS 2017

Chào mọi người, đây là lỗi mình gặp khi sử dụng strcpy trong C++, mình đã set

, ctrl + shift + B không hiện lỗi, nhưng F5 thì không chạy được ạ.

Là mình thêm cái này vào, bên trên mình ghi sai ạ

Thì cứ sửa theo như nó hướng dẫn xem sao?


2 Likes

Vẫn không được nha bạn ơi, mình thữ include string.h vào rồi vẫn không được

Nó bảo là strcpy là không an toàn. Hãy dùng strcpy_s đi.

2 Likes

Vâng, mình cũng biết thế, strcpy_s cần truyền vào 3 tham số, mình đã sửa cho phù hợp, vẫn không được nha b :slight_smile:

vậy thì viết 1 cái for loop luôn cho rồi =)

for (int i = 0; i <= len && (pCh[i++] = *s++));
pCh[len] = '\0';

edit: mà đã cấp phát đủ strlen(s) + 1 cho pCh rồi thì khỏi cần copy kiểu strcpy_s đó, xài strcpy luôn:

for (auto p = pCh; (*p++ = *s++); );

hoặc tốt hơn là xài memcpy: vì spCh có kích cỡ như nhau:

memcpy(pCh, s, len + 1);
3 Likes

Ờ mình toàn dùng memcpy với wmemcpy.

1 Like

Cảm ơn anh nhiều ạ, nhưng cái này dài và phức tạp quá nhỉ

Vì vậy bạn không nên dùng VS :slight_smile: mà compiler nó cũng đâu hỗ trợ C++ đầy đủ đâu, và IDE ngon thì có cái free hẳn luôn ấy.

3 Likes

Bạn thêm kiểu gì chứ mình làm thế hoài, chạy bình thường có sao đâu?
Visual Studio là một IDE rất tốt, bản Community là miễn phí. Đến giờ thứ duy nhất mình phàn nàn về nó là cái compiler của nó quá khó để dùng trong command line.

2 Likes

Bạn thử cách này nha: Project --> Properties --> C/C++ --> Advanced --> Disable Specific Warnings --> Thêm 4996 --> OK.

Bạn thêm “#pragma warning (disable : 4996)” ở dươi muc khai báo thư viện xem sao.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?