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ố 16 kết quả

Đề tài: [Solved] Giúp sửa lỗi khó hiều, bài quản lý nhân viên.

  1. #1
    Ngày gia nhập
    08 2008
    Bài viết
    0

    Smile [Solved] Giúp sửa lỗi khó hiều, bài quản lý nhân viên.

    mình có đoạn code về bài tập struct, khi compile trong Code::Blocks và free C thì ko có error và warning
    Khi Run thì free C chạy tốt, nhưng thằng Code::Blocks thì khi nhập họ tên xong ,ấn Enter thì Windows nó hiện lên thông báo lỗi :"code::blocks has encountered prolem and needs to close. We are sorry.... "

    bạn nào co kinh nghiệm có thể giải thích cho mình đc ko? cùng 1 trình biên dịch GCC mà sao free C chạy đc, còn C::B báo lỗi

    điên đầu vì cái này, đến nỗi quên luôn thằng visual C++ là chưa test, ko biết có bị giống C::B ko nữa

    code here (srr, mình ko sử dụng đc tag CODE), ai dùng C::B thì test gùm

    #include <stdio.h>
    #include <conio.h>
    #include <string.h>
    #include <stdlib.h>

    struct DATE
    {
    int ngay;
    char* thang;
    int nam;
    };

    typedef struct
    {
    char* hoten;
    struct DATE ngaysinh;
    float luong;
    }PERSON;

    void input(PERSON*);
    void output(PERSON);



    int main()
    {
    PERSON person;
    input(&person);
    output(person);
    return 0;
    }
    void input(PERSON* ps)
    {
    int iTemp;
    float fTemp;

    printf("\nNhap ho ten nhan vien : ");
    fflush(stdin);// xoa bo dem
    gets(ps->hoten); // Nhap chuoi bang ham gets( )

    printf("\nNhap ngay sinh: ");
    scanf("%d", &iTemp); // Nhap so bang ham scanf( )
    ps->ngaysinh.ngay = iTemp;

    printf("\nNhap thang : ");
    fflush(stdin);
    gets(ps->ngaysinh.thang);

    printf("\nNhap nam sinh : ");
    scanf("%d", &iTemp);
    ps->ngaysinh.nam = iTemp;

    printf("\nNhap luong: ");
    scanf("%f", &fTemp);
    ps->luong = fTemp;
    }

    void output(PERSON ps)
    {
    printf("\nHo ten: %s ", ps.hoten);
    printf("\nNgay sinh :%d %s %d ", ps.ngaysinh.ngay, ps.ngaysinh.thang, ps.ngaysinh.nam);
    printf("\nLuong : %f ", ps.luong);
    }

  2. #2
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    Dẹp Cfree vào thùng rác ! Cho tui hỏi char* ten và và char* thang là cái gì ?

  3. #3
    Ngày gia nhập
    02 2008
    Bài viết
    1,009

    Code:
    #include <stdio.h>
    #include <conio.h>
    #include <string.h>
    #include <stdlib.h>
    
    struct DATE
    {
    int ngay;
    char* thang;
    int nam;
    };
    
    typedef struct
    {
    char* hoten;
    struct DATE ngaysinh;
    float luong;
    }PERSON;
    
    void input(PERSON*);
    void output(PERSON);
    
    
    
    int main()
    {
    PERSON person;
    input(&person);
    output(person);
    return 0;
    }
    void input(PERSON* ps)
    {
    int iTemp;
    float fTemp;
    
    printf("\nNhap ho ten nhan vien : ");
    fflush(stdin);// xoa bo dem
    gets(ps->hoten); // Nhap chuoi bang ham gets( )
    
    printf("\nNhap ngay sinh: ");
    scanf("%d", &iTemp); // Nhap so bang ham scanf( )
    ps->ngaysinh.ngay = iTemp;
    
    printf("\nNhap thang : ");
    fflush(stdin);
    gets(ps->ngaysinh.thang);
    
    printf("\nNhap nam sinh : ");
    scanf("%d", &iTemp);
    ps->ngaysinh.nam = iTemp;
    
    printf("\nNhap luong: ");
    scanf("%f", &fTemp);
    ps->luong = fTemp;
    }
    
    void output(PERSON ps)
    {
    printf("\nHo ten: %s ", ps.hoten);
    printf("\nNgay sinh :%d %s %d ", ps.ngaysinh.ngay, ps.ngaysinh.thang, ps.ngaysinh.nam);
    printf("\nLuong : %f ", ps.luong);
    }
    chạy ổn trên VC++6.0 là được rồi--> code OK

  4. #4
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    chạy ổn trên VC++6.0 là được rồi--> code OK
    Thiệt là cậu nghĩ code này đúng ?

  5. #5
    Ngày gia nhập
    01 2008
    Bài viết
    240

    Trích dẫn Nguyên bản được gửi bởi nhapmonIT Xem bài viết
    mình có đoạn code về bài tập struct, khi compile trong Code::Blocks và free C thì ko có error và warning
    Khi Run thì free C chạy tốt, nhưng thằng Code::Blocks thì khi nhập họ tên xong ,ấn Enter thì Windows nó hiện lên thông báo lỗi :"code::blocks has encountered prolem and needs to close. We are sorry.... "

    bạn nào co kinh nghiệm có thể giải thích cho mình đc ko? cùng 1 trình biên dịch GCC mà sao free C chạy đc, còn C::B báo lỗi

    điên đầu vì cái này, đến nỗi quên luôn thằng visual C++ là chưa test, ko biết có bị giống C::B ko nữa

    code here (srr, mình ko sử dụng đc tag CODE), ai dùng C::B thì test gùm

    #include <stdio.h>
    #include <conio.h>
    #include <string.h>
    #include <stdlib.h>

    struct DATE
    {
    int ngay;
    char* thang;
    int nam;
    };

    typedef struct
    {
    char* hoten;
    struct DATE ngaysinh;
    float luong;
    }PERSON;

    void input(PERSON*);
    void output(PERSON);



    int main()
    {
    PERSON person;
    input(&person);
    output(person);
    return 0;
    }
    void input(PERSON* ps)
    {
    int iTemp;
    float fTemp;

    printf("\nNhap ho ten nhan vien : ");
    fflush(stdin);// xoa bo dem
    gets(ps->hoten); // Nhap chuoi bang ham gets( )

    printf("\nNhap ngay sinh: ");
    scanf("%d", &iTemp); // Nhap so bang ham scanf( )
    ps->ngaysinh.ngay = iTemp;

    printf("\nNhap thang : ");
    fflush(stdin);
    gets(ps->ngaysinh.thang);

    printf("\nNhap nam sinh : ");
    scanf("%d", &iTemp);
    ps->ngaysinh.nam = iTemp;

    printf("\nNhap luong: ");
    scanf("%f", &fTemp);
    ps->luong = fTemp;
    }

    void output(PERSON ps)
    {
    printf("\nHo ten: %s ", ps.hoten);
    printf("\nNgay sinh :%d %s %d ", ps.ngaysinh.ngay, ps.ngaysinh.thang, ps.ngaysinh.nam);
    printf("\nLuong : %f ", ps.luong);
    }
    Cậu viết trên TC++ 3.0 à?
    Nếu viết trên đó thì cậu muốn nhập vào thì nhập qua biến trung gian

    Code:
    void input(PERSON* ps)
    {
            int iTemp;
            float fTemp;
    char*temp_hoten;
    temp_hoten=(char*)malloc(50*sizeof(char));
            printf("\nNhap ho ten nhan vien : ");
            fflush(stdin);// xoa bo dem
    gets(temp_hoten)
    strcpy(ps->hoten,temp_hoten)
    //tương tự cho mấy trường còn lại
    //        gets(ps->hoten); // Nhap chuoi bang ham gets( )
    
            printf("\nNhap ngay sinh: ");
            scanf("%d", &iTemp); // Nhap so bang ham scanf( )
            ps->ngaysinh.ngay = iTemp;
    
            printf("\nNhap thang : ");
            fflush(stdin);
            gets(ps->ngaysinh.thang);
    
            printf("\nNhap nam sinh : ");
            scanf("%d", &iTemp);
            ps->ngaysinh.nam = iTemp;
    
            printf("\nNhap luong: ");
            scanf("%f", &fTemp);
            ps->luong = fTemp;
    }

  6. #6
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    Mặc định [Solved] Giúp sửa lỗi khó hiều, bài quản lý nhân viên.

    Vẫn crash như thường ! Coi lại giá trị của 2 thằng đó !

  7. #7
    Ngày gia nhập
    02 2008
    Bài viết
    1,009

    uhm mình nhầm,test không kỹ,nó chạy được bước đầu nhưg bước sau lại sai,vậy thì cứ thay con trỏ bằng mảng đi
    hoten[10]
    thang[10]

  8. #8
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    uhm mình nhầm,test không kỹ,nó chạy được bước đầu nhưg bước sau lại sai,vậy thì cứ thay con trỏ bằng mảng đi
    hoten[10]
    thang[10]
    Now you got it !

  9. #9
    Ngày gia nhập
    02 2008
    Bài viết
    1,009

    thực ra hàm cin.getline từ lâu đã không cho phép chạy cái chuỗi kiểu char * tên chuỗi từ lâu rồi,vì vậy cậu cũng nên bỏ thói quen cấp phát động cho chuỗi thế này đi thì hơn

  10. #10
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    Vấn đề không phải là getline(), và nếu cấp phát động thì phải cấp phát động cho dữ liệu của chúng ta chứ không phải giá trị tạm thời rồi dùng strcpy() vì vậy code của nthung cũng vẫn bị crash.
    Đây là cách nếu dùng như trên :
    C Code:
    1. #include <cstdio>
    2. #include <cstdlib>
    3.  
    4. struct S
    5. {
    6.     int   num;
    7.     char* ptr;
    8. };
    9.  
    10. int main()
    11. {
    12.     int some_size = 80;
    13.     S   my_struct;
    14.  
    15.     my_struct.ptr = ( char* )malloc( sizeof( 80 ) );
    16.  
    17.     gets( my_struct.ptr );
    18.  
    19.     printf( "%s", my_struct.ptr );
    20.  
    21.     free( my_struct.ptr );
    22.  
    23.     return 0;
    24. }

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

  1. Bài tập giải thuật Quản lý nhân viên,phòng ban sử dụng cấu trúc và danh sách khó quá??
    Gửi bởi tuansonyu trong diễn đàn Thắc mắc CTDL & Giải thuật
    Trả lời: 1
    Bài viết cuối: 13-02-2014, 10:25 AM
  2. Bài tập C Giúp sửa lỗi chương trình quản lý nhân viên
    Gửi bởi mega trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 7
    Bài viết cuối: 29-06-2013, 09:12 PM
  3. [ Solved ]Bài tập tính: a mũ 3 mũ n bị sai kết quả, giúp mình với
    Gửi bởi congtoan trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 8
    Bài viết cuối: 21-10-2008, 01:16 PM
  4. [ Solved ]Chương trình quản lí sinh viên
    Gửi bởi nakaru_snow trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 16
    Bài viết cuối: 19-09-2008, 01:55 PM
  5. [Solved]default, dễ hay là khó nhỉ?
    Gửi bởi hani trong diễn đàn Thắc mắc đại cương Database & Reporting
    Trả lời: 4
    Bài viết cuối: 04-12-2007, 09:52 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