Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 19 kết quả

Đề tài: cách sử dụng hàm strcpy() và thư viện string với visual studio ultimate 2010

  1. #1
    Ngày gia nhập
    11 2011
    Nơi ở
    Viet Nam
    Bài viết
    34

    Wink cách sử dụng hàm strcpy() và thư viện string với visual studio ultimate 2010

    Mình cảm thấy rất bực khi sài cái visual 2010 này, nhất là mỗi khi cần dùng đến ham và lệnh với thư viện string, lỗi điển hình như sau:
    warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
    hàm strcpy() trong thư viện string đúng rồi còn báo lỗi gì ko biết, ai biết chỉ giúp tớ với

  2. #2
    Ngày gia nhập
    04 2010
    Bài viết
    1,534

    Qua đến phiên bản 2010 của các phần mềm. Microsoft đã bị bắt buộc phải theo đà tiến triển của giới công nghệ, tức là phải cung cấp những hổ trợ có tính cách an toàn.

    Câu trên chỉ là câu cảnh báo chữ không phải là lỗi.
    Nó chỉ nói là hàm strcpy căn bản không an toàn (có khả năng bị lỗi tràn chỗ chứa), và nó đề nghị bạn dùng một hàm khác (strcpy_s).

    Nếu bạn không thích bị cảnh báo, thì hãy theo dõi câu cảnh báo trên cũng có chỉ dẫn cho bạn cách thức bỏ qua nó. Một khi bạn theo cách thức này rồi thì nó sẽ không bao giờ cảnh báo nữa.

    Người xài đồ xịn mà không tham khảo qua cách thức sử dụng trước thì luôn gặp cái bực mình.

  3. #3
    Ngày gia nhập
    11 2011
    Nơi ở
    /home/tancuong
    Bài viết
    32

    Trích dẫn Nguyên bản được gửi bởi code_c Xem bài viết
    her her bạn chỉ cho mình luôn cách đi, mình thật sự ko biết
    bạn có đọc cái warning chưa:
    warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
    nó nói: hàm strcpy không an toàn, dùng strcpy_s thay thế. Để vô hiệu hoá cảnh báo dùng macro _CRT_SECURE_NO_WARNINGS. Xem online help để biết thêm chi tiết.

    đại loại đầu file mã nguồn khai báo như thế này
    C Code:
    1. #define _CRT_SECURE_NO_WARNINGS

  4. #4
    Ngày gia nhập
    11 2010
    Nơi ở
    hell
    Bài viết
    165

    thêm cách này nữa cho dễ.
    #pragma warning(disable:4996)
    HT117-5277

  5. #5
    Ngày gia nhập
    11 2010
    Bài viết
    589

    Mình không dùng VS nên không rõ lắm nhưng bạn thử hàm strncpy xem còn warning nữa không ? Hàm này cũng có kiểm tra kích thước và tương thích với chuẩn.

  6. #6
    Ngày gia nhập
    11 2011
    Nơi ở
    /home/tancuong
    Bài viết
    32

    Mặc định cách sử dụng hàm strcpy() và thư viện string với visual studio ultimate 2010

    Trích dẫn Nguyên bản được gửi bởi treatmaster Xem bài viết
    thêm cách này nữa cho dễ.
    #pragma warning(disable:4996)
    sẵn tiện đây hỏi luôn bác câu lệnh #pragma sử dụng như thế nào vậy. Lênh google ít trang nào nói về nó.

  7. #7
    Ngày gia nhập
    07 2010
    Nơi ở
    chỗ kín
    Bài viết
    446

    #pragma token-string

    hoặc

    __pragma(token-string)

    trong đó token-string có thể là warning như ví dụ trên, có thể là một trong danh sách dưới đây:

    alloc_text
    auto_inline
    bss_seg
    check_stack
    code_seg
    comment
    ...


    pragma được dùng để thiết lập một số tính năng của trình biên dịch.

    như ví dụ trên trình dịch thông báo warning, bạn muốn tắt warning đó đi thì viết #pragma warning(disable:4996), mỗi một token-string có các tham số và tác dụng riêng, bạn tham khảo đầy đủ ở đây: http://msdn.microsoft.com/en-us/library/d9x1s805.aspx

    lưu ý cái này là microsoft specific, nên chỉ dùng cho VC++ thôi.

  8. #8
    Ngày gia nhập
    11 2011
    Nơi ở
    Viet Nam
    Bài viết
    34

    bác nào xem hộ em cái nó lại dở chứng báo cái lỗi đó rồi bây giờ xem cái gì vào để chữa hả mấy bác

  9. #9
    Ngày gia nhập
    10 2011
    Bài viết
    552

    Đó ko phải là lỗi. Có thấy chữ WARNING nó có 7 ký tự còn chữ ERROR nó chỉ có 5 ký tự ko ?
    Người khác đã nói rõ cho bạn biết rồi mà ?

    VTS nói quá rõ ràng rồi bạn ko chịu đọc gì cả. Muốn "sống chung với lũ" hay "đi núp chỗ cao khác" thì cứ làm theo hướng dẫn

    Nếu sống chung thì hãy cứ để vậy mà "xem cho vui mắt" chứ ko nên tắt thông báo warning đi.
    Có nhiều cái warning "nguy hiểm khủng khiếp" cần phải quan sát nữa. Phải để warning lại mà quan sát, đánh giá, khắc phục

    Tập cách "đọc những gì compiler nói" đi bạn
    Um Mani Padme Hum...!!

  10. #10
    Ngày gia nhập
    11 2011
    Nơi ở
    Viet Nam
    Bài viết
    34

    Trích dẫn Nguyên bản được gửi bởi clchicken Xem bài viết
    Đó ko phải là lỗi. Có thấy chữ WARNING nó có 7 ký tự còn chữ ERROR nó chỉ có 5 ký tự ko ?
    Người khác đã nói rõ cho bạn biết rồi mà ?
    VTS nói quá rõ ràng rồi bạn ko chịu đọc gì cả. Muốn "sống chung với lũ" hay "đi núp chỗ cao khác" thì cứ làm theo hướng dẫn
    Nếu sống chung thì hãy cứ để vậy mà "xem cho vui mắt" chứ ko nên tắt thông báo warning đi.
    Có nhiều cái warning "nguy hiểm khủng khiếp" cần phải quan sát nữa. Phải để warning lại mà quan sát, đánh giá, khắc phục
    Tập cách "đọc những gì compiler nói" đi bạn
    Thực ra đang thi cử nên mỉnh cũng ko để tâm mấy, bây giờ mình hiểu qua rồi và đã thêm 1 trong hai lệnh sau
    Code:
    #pragma warning(disable:C4996)
    #define _CRT_SECURE_NO_WARNINGS
    đã chạy rồi nhưng nó lại báo lỗi sau


    đây là code mới.
    Code:
    #include "iostream"
    #include "conio.h"
    #include "stdio.h"
    #include "string.h"
    #include "iomanip"
    
    #pragma warning(disable:C4996)
    //#define _CRT_SECURE_NO_WARNINGS
    
    using namespace std;
    
    class cstring
    {
    	private:
    		char*str;
    		int length;
    	public:
    		cstring();
    		cstring(const cstring &);
    		~cstring();
    		cstring(char *);
    		cstring operator+(cstring &);
    		cstring & operator=(const cstring &);
    		friend istream & operator>>(istream &is,cstring &);
    		friend ostream & operator<<(ostream &os,cstring &s);
    };
    cstring::cstring()
    {
    	length=0;
    	str=NULL;
    }
    cstring::cstring(const cstring &s)
    {
    	length=s.length;
    	str=new char[length+1];
    	strcpy(str,s.str);
    }
    cstring::~cstring()
    {
    	delete []str;
    }
    cstring::cstring(char *s)//chuyen doi kieu
    {
    	//cout<<"constructor chuyen doi kieu\n";
    	length=strlen(s);
    	str=new char[length + 1];
    	strcpy(str,s);
    }
    cstring & cstring::operator=(const cstring &s)//toan tu gan
    {
    	if(&s!=this)
    	{
    		delete []str;
    		length=s.length;
    		str=new char[length+1];
    		strcpy(str,s.str);
    	}
    		return *this;
    }
    
    cstring cstring::operator+(cstring &s)//toan tu +
    {
    	cstring st;
    	st.length=length + s.length;
    	st.str=new char[st.length+1];
    	strcpy(st.str,str);//st.str=str
    	strcat(st.str," ");
    	strcat(st.str,s.str); //st.str = st.str + s.str
    	return st;
    }
    istream &operator>>(istream &is,cstring &s)
    {
    	char tmp[100];
    	is.getline(tmp,100);
    	s=tmp;
    	return is;
    }
    ostream &operator<<(ostream &os,cstring &s)
    {
    	os<<s.str;
    	return os;
    }
    int main()
    {
    	cstring s1("hello"),s2("viet Nam"),s3;
    	cout<<"Chuoi s1:"<<s1<<"\n";
    	cout<<"Chuoi s2:"<<s2<<"\n";
    	s3=s1+s2;
    	cout<<"Chuoi s1 + chuoi s2 : "<<s3<<"\n";
    	cstring s4,s5,s6;
    	cout<<"Nhap chuoi s4:";
    	cin>>s4;
    	cout<<"Chuoi s4 = "<<s4<<"\n";
    	cout<<"Nhap chuoi s5:";
    	cin>>s5;
    	cout<<"\nChuoi s5 = "<<s5<<"\n";
    	s6=s4+s5;
    	cout<<"\nChuoi s4 + chuoi s5 = "<<s6;
    	getch();
    }

Các đề tài tương tự

  1. Visual Studio 2010 Ultimate Final Full
    Gửi bởi langman trong diễn đàn Công cụ, ebooks VC++
    Trả lời: 105
    Bài viết cuối: 20-09-2015, 11:00 AM
  2. Tạo nhiều chương trình trong Project của MS Visual Studio 2010 Ultimate?
    Gửi bởi vinhloiz trong diễn đàn Thắc mắc chung
    Trả lời: 9
    Bài viết cuối: 02-10-2013, 09:52 AM
  3. Visual Studio 2010 Ultimate x86, x64 full bản quyền file ISO
    Gửi bởi anhut trong diễn đàn Công cụ, ebooks VC++
    Trả lời: 0
    Bài viết cuối: 29-03-2012, 07:18 PM
  4. Phần mềm lập trình C Sau khi setup visual studio ultimate 2010 thì chọn loại cấu hình enviroment nào?
    Gửi bởi itc trong diễn đàn Tài liệu, ebooks và công cụ
    Trả lời: 2
    Bài viết cuối: 02-03-2012, 04:13 PM
  5. MSDN của Visual Studio 2010 Ultimate ở đâu?
    Gửi bởi nhathoamimcuoi trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 3
    Bài viết cuối: 27-10-2011, 11:28 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn