30/09/2018, 18:59
Lỗi ghép xâu strcat_s
void themdocgia(int stt, int madocgia[max], int ngaysinh[max], int gioitinh[max], int ngaythe[max],
char hoten[max], int d_hoten[max], char cmnd[max], int d_cmnd[max], char email[max], int d_email[max], char diachi[max], int d_diachi[max])
{
int so,vitri;
char chu[100];
// nhap ma doc gia
printf("Nhap MA DOC GIA ");
scanf_s("%d", madocgia[stt]);
// nhap ho va ten
printf("Nhap HO VA TEN ");
fflush(stdin);
gets_s(chu);
strcat_s(hoten, chu);
d_hoten[stt] = d_hoten[stt-1]+ strlen(chu);
// nhap cmnd
printf("Nhap CMND ");
fflush(stdin);
gets_s(chu);
strcat_s(cmnd, chu);
d_cmnd[stt] = d_cmnd[stt - 1] + strlen(chu);
// nhap ngay thang nam sinh
vitri = stt * 3;
printf("Nhap NGAY THANG NAM SINH
");
printf("Ngay:
");
scanf_s("%d", ngaysinh[vitri]);
printf("Thang
");
scanf_s("%d", ngaysinh[vitri + 1]);
printf("Nam
");
scanf_s("%d", ngaysinh[vitri + 2]);
// nhap gioi tinh
printf("Nhap GIOI TINH
");
printf("Nam - Nhap 1
");
printf("Nu - Nhap 2
");
scanf_s("%d", gioitinh[stt]);
// nhap email
printf("Nhap EMAIL
");
fflush(stdin);
gets_s(chu);
strcat_s(email, chu);
d_email[stt] = d_email[stt - 1] + strlen(chu);
// nhap dia chi
printf("Nhap DIA CHI
");
fflush(stdin);
gets_s(chu);
strcat_s(diachi, chu);
d_diachi[stt] = d_diachi[stt - 1] + strlen(chu);
// nhap ngay lap the
printf("Nhap NGAY LAP THE
");
printf("Ngay:
");
scanf_s("%d", ngaythe[vitri]);
printf("Thang
");
scanf_s("%d", ngaythe[vitri + 1]);
printf("Nam
");
scanf_s("%d", ngaythe[vitri + 2]);
}
Chương trình báo lỗi là error C2660: ‘strcat_s’ : function does not take 2 arguments . Ai giải thích giúp e với, e cảm ơn
Bài liên quan
Dưới đây là khai báo của hàm
strcat_s()
Bạn thấy đấy hàm strcat_s nó nhận 3 tham số, mà bạn lại chỉ truyền có 2 tham số -> lỗi. Bạn phải truyền thêm số ký tự bạn muốn nối vào, ví dụ:
strcat_s(diachi, strlen(chu)-1, chu);
Thanks anh. Tại sao strlen(chu)-1 vậy a?
Mình bị nhầm, mình tưởng
strlen(chu)
trả về kích thước của chuỗi bao gồm cả ký tự kết thúc chuỗi\0
.Đúng ra là:
strcat_s(diachi, strlen(chu), chu)
mình nghĩ hàm strcat_s( char *strDestination, size_t numberOfElements, const char *strSource );
ở đây size_t numberOfElements chính là kích thước bộ nhớ đệm strDestination, điều kiện để hàm không bị lỗi là: numberOfElements >= strlen(strDestination) + strlen(strSource) + 1.