30/09/2018, 18:02

Lỗi has stopped working

#include <stdio.h>

struct SV
{
    int masv;
    char *hoten;
    char *diachi;
    int sdt;
};
void NhapMotSinhVien(SV &sv);
void XuatMotSinhVien(SV sv, int i);
void NhapSinhVien(SV a[], int &n);
void XuatSinhVien(SV a[], int n);

int main()
{
    SV a[100];
    int n;
    NhapSinhVien(a,n);
    XuatSinhVien(a,n);
    getchar();
    return 0;
}
void NhapMotSinhVien(SV &sv)
{
    printf("ma so sinh vien: ");
    scanf("%d", &sv.masv);
    printf("ho va ten : ");     fflush(stdin);
    gets(sv.hoten);
    printf("dia chi: ");        fflush(stdin);
    gets(sv.diachi);
    printf("so dien thoai: ");
    scanf("%d", &sv.sdt);
}

void XuatMotSinhVien(SV sv, int i)
{
    printf("		-----------------THONG TIN SINH VIEN-----------------
");
    printf("%-4s %-10s %-30s %-20s %10s
", "STT", "MSSV", "HO VA TEN", "DIA CHI", "SDT");
    printf("%-4d %-10d %-30s %-20s %10d
", i, sv.masv, sv.hoten, sv.diachi, sv.sdt);
}

void NhapSinhVien(SV a[], int &n)
{
    printf("Nhap so luong sinh vien: ");
    scanf("%d", &n);
    for(int i=0; i<n; i++)
    {
        printf("-->Nhap thong tin sinh vien thu %d: 
", i+1);
        NhapMotSinhVien(a[i]);
    }
}

void XuatSinhVien(SV a[], int n)
{
     for(int i=0; i<n; i++)
    {
        XuatMotSinhVien(a[i], i+1);
    }
}

Ngay chỗ hàm void NhapMotSinhVien(SV &sv) khi nhập đến diachi thì nó báo has stopped working .Mọi người xem giúp sai chỗ nào thế ạ

BX136 viết 20:08 ngày 30/09/2018

sao bạn ko dùng mảng char mà lại dùng char* gets ko nhận kiểu dữ liệu char* hay con trỏ kiểu char…

struct SV
{
	int masv;
	char hoten[20];
	char diachi[100];
	int sdt;
};

như vậy liệu có giúp đc bạn không

*grab popcorn* viết 20:13 ngày 30/09/2018

Đơn giản là bạn chưa cấp phát 2 con trỏ hoten và diachi (nếu như bạn ko muốn xài mảng)
Thêm stdlib.h vào và thêm lệnh này trc gets(sv.hoten); là chạy phà phà

sv.hoten = (char *)malloc(sizeof(char)*100); //tương tự cho sv.diachi là ok
Bài liên quan
0