Từ 1 tới 6 trên tổng số 6 kết quả

Đề tài: Lỗi convert từ * qua char [20].(Hoặc lỗi convert các kiểu)Mình rất hay bị lỗi này

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

    Mặc định Lỗi convert từ * qua char [20].(Hoặc lỗi convert các kiểu)Mình rất hay bị lỗi này

    Mình rất hay bị lỗi convert nhất là khi chuyển đổi con trỏ với xâu. Biết, hay mắc, nhưng không biết sửa thế nào với những lỗi như thế này! Mong anh, chị, em đóng góp cho mình để khắc phục lỗi này...
    Trước hết giúp mình bài này với:
    Đầu tiên là file tudien.h:
    C++ Code:
    1. struct Node
    2. {
    3.     char data[20];
    4.     Node *next;
    5. };
    6.  
    7. class tudien
    8. {
    9. private:
    10.     Node *First;
    11. public:
    12.     tudien(void);
    13.     void add(char *tu);
    14.     void xoa(char *tu);
    15.     void duyet();
    16.     ~tudien(void);
    17. };
    tiếp theo là file tudien.cpp
    C++ Code:
    1. #include "tudien.h"
    2. #include <iostream>
    3. #include <conio.h>
    4. #include <stdio.h>
    5. using namespace std;
    6. tudien::tudien(void)
    7. {
    8.     First=NULL;
    9. }
    10. void tudien::add(char *tu)
    11. {
    12.     Node *tam;
    13.     tam=new Node;
    14.     int a;
    15.     a=strcmp(First->data,tu);
    16.     if(First==NULL||a<0)
    17.     {
    18.         tam->data=tu;  //Chương trình bị lỗi ở đoạn này
    19.         tam->next=First;
    20.         First=tam;
    21.     }
    22.     Node *p=First;
    23.     while(p->next!=NULL&&(strcmp(p->data,tu)<0))
    24.         p=p->next;
    25.     tam->data=tu;     //Chương trình bị lỗi ở đoạn này
    26.     tam->next=p->next;
    27.     p->next=tam;
    28. }
    29. void tudien::xoa(char *tu)
    30. {
    31.     while(First!=NULL&&(strcmp(First->data,tu)==0))
    32.     {
    33.         Node *p=First;
    34.         First=First->next;
    35.         delete p;
    36.     }
    37.     if(First!=NULL)
    38.     {
    39.         Node *p=First;
    40.         while(p->next!=NULL)
    41.         {
    42.             if(p->next->data==tu)
    43.             {
    44.                 Node *q;
    45.                 q=p->next;
    46.                 p->next=q->next;
    47.                 delete q;
    48.             }
    49.             else p=p->next;
    50.         }
    51.     }
    52. }
    53. void tudien::duyet()
    54. {
    55.     Node *p;
    56.     p=First;
    57.     while(p->next!=NULL)
    58.     {
    59.         cout<<" "<<p->data;
    60.         p=p->next;
    61.     }
    62. }
    63. tudien::~tudien(void)
    64. {
    65. }
    cuối cùng là file main():
    C++ Code:
    1. #include "tudien.h"
    2. #include <iostream>
    3. #include <conio.h>
    4. using namespace std;
    5. void main()
    6. {
    7.     tudien a;
    8.     char b[20];
    9.    
    10.     cout<<"\nNhap tu can bo sung tu dien: ";
    11.     gets(b);
    12.     a.add(b);
    13.     a.duyet();
    14.     getch();
    15. }

    2 lỗi ở trên đều giống nhau đó là:
    1>c:\users\bui xuan hoang\documents\visual studio 2008\projects\tu dien\tu dien\tu.cpp(18) : error C2440: '=' : cannot convert from 'char *' to 'char [20]'
    1> There are no conversions to array types, although there are conversions to references or pointers to arrays
    1>c:\users\bui xuan hoang\documents\visual studio 2008\projects\tu dien\tu dien\tu.cpp(25) : error C2440: '=' : cannot convert from 'char *' to 'char [20]'
    1> There are no conversions to array types, although there are conversions to references or pointers to arrays
    Mong anh chị em gỡ rồi mình với...đóng góp cho mình ý kiến để xử lý khi khắc phục những lỗi như thế này. Thank anh chị em nhiều

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

    Mình đã sửa được 2 lỗi trên(chỉ thay ở mỗi dòng sai bằng lệnh strcpy)...Nhưng giờ lại sinh ra cái mới và mình củng đang bó tay.... không nhận ra được giá trị của First
    Cụ thể:

    Code:
    +		this	0x0000007f {First=??? }	tudien * const
    +		tu	0xcdcdcdcd <Bad Ptr>	char *
    +		tam	0x00000000 {data=0x00000000 <Bad Ptr> next=??? }	Node *
    		a	4346352	int
    +		p	0x00000000 {data=0x00000000 <Bad Ptr> next=??? }	Node *
    và chuơng trình tự break....nó chỉ ở cái dòng strcmp

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

    Trích dẫn Nguyên bản được gửi bởi kuhoang0512 Xem bài viết
    Mình đã sửa được 2 lỗi trên(chỉ thay ở mỗi dòng sai bằng lệnh strcpy)...Nhưng giờ lại sinh ra cái mới và mình củng đang bó tay.... không nhận ra được giá trị của First
    Cụ thể:

    Code:
    +		this	0x0000007f {First=??? }	tudien * const
    +		tu	0xcdcdcdcd <Bad Ptr>	char *
    +		tam	0x00000000 {data=0x00000000 <Bad Ptr> next=??? }	Node *
    		a	4346352	int
    +		p	0x00000000 {data=0x00000000 <Bad Ptr> next=??? }	Node *
    và chuơng trình tự break....nó chỉ ở cái dòng strcmp
    Mới vào First = NULL bạn đã gán ở struct .
    Cho nên lúc đó First nó chả là cái gì cả nên ko thể ->data, do đó strcmp sẽ ko thực hiện dc

    Bạn cần sửa thế này :
    Nếu First ==NULL thì ta add thẳng từ vào từ điển luôn.
    Nếu !NULL thì mới bắt đầu làm các công việc kiẻm tra từ đã tồn tại chưa rồi add vào

  4. #4
    Ngày gia nhập
    04 2010
    Bài viết
    69

    Cảm ơn bạn nhiều nhiều!
    Mình đã nghi ngờ cái lỗi này từ sau khi xửa xong cái convert bằng strcpy kia!
    Kiểm tra thì nó ra một đống kia.

    Mình đã sửa xong...mời bạn ly cafe nào!

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

    Trích dẫn Nguyên bản được gửi bởi kuhoang0512 Xem bài viết
    Cảm ơn bạn nhiều nhiều!
    Mình đã nghi ngờ cái lỗi này từ sau khi xửa xong cái convert bằng strcpy kia!
    Kiểm tra thì nó ra một đống kia.

    Mình đã sửa xong...mời bạn ly cafe nào!
    Mình ở Huế , mời dc ko ? , mà Huế đang lụt , chả đi đâu dc cả ^^ hehehehe

  6. #6
    Ngày gia nhập
    04 2010
    Bài viết
    69

    Mặc định Lỗi convert từ * qua char [20].(Hoặc lỗi convert các kiểu)Mình rất hay bị lỗi này

    Mình củng đang học ở Huế! Thế thì tốt quá, Nếu bác ở huế, em mới đi ngay ah! Cho em sđt của bác, em SV năm 3 thôi!, ở chỗ em củng đang lụt!, nước gần qua háng rồi!

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

  1. Lập trình C Gặp lỗi error C2440: '=' : cannot convert from 'char *' to 'char [50]'
    Gửi bởi Hades_Huynh trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 21-11-2013, 01:38 PM
  2. Convert char** to const char** như thế nào?
    Gửi bởi iamme22021990 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 7
    Bài viết cuối: 31-05-2012, 10:27 PM
  3. Kỹ thuật C++ Convert char* to char[] trong c++
    Gửi bởi tinak4 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 5
    Bài viết cuối: 20-02-2012, 01:24 PM
  4. convert LPTSTR->char*?
    Gửi bởi nthung trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 1
    Bài viết cuối: 23-08-2010, 11:57 PM
  5. Convert char sang int
    Gửi bởi lamhieu01 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 5
    Bài viết cuối: 21-09-2009, 02:13 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