In lạiTác giả: Vũ trụ không gianThời gian cập nhật: 2023-11-04 03:26:49294
Tôi đang gặp rắc rối với một chương trình rất đơn giản và tôi thực sự không biết tại sao. Có cấu trúc của một người:
cấu trúc typedef { tên char[50]; char p_id[11]; char cel[11]; int bởi; int id; } Người;
Bây giờ, có một cấu trúc khác đại diện cho danh sách liên hệ:
cấu trúc typedef { Người * người; } lDanh bạ;
Tôi đã cố gắng thêm dữ liệu của người này vào đó và thêm người này vào danh sách liên hệ. Việc thêm người là bình thường nên mình sẽ không đăng code ở đây nhưng khi đọc chuỗi đã xảy ra lỗi:
void include(lDanh bạ * myDanh bạ) {
Người p;
scanf("%s", p.name); scanf("%d", &p.by); //năm sinh scanf("%s", p.p_id); printf("TEST P_ID: %s\n\n", p.p_id); scanf("%s", p.cel); printf("KIỂM TRA P_ID LẠI: %s\n\n", p.p_id);
myLinks->people[index]=p; //đừng lo lắng về chỉ mục, có một đoạn mã tôi bỏ qua để dễ đọc hơn, chỉ cần cho rằng nó đúng. } }
Lưu ý rằng tôi đã thực hiện kiểm tra in ở đó vì khi tôi liệt kê các liên hệ của mình, các liên hệ p_id chính nó và cel được kết nối với nhau nên tôi đã in toàn bộ mã cho đến khi phát hiện ra lỗi ở đó.
Đây là một ví dụ đầu vào:
Tên 1991 11111111111 22222222222
Tuy nhiên, nếu tôi in p.cel, nó sẽ được in chính xác
Có ý tưởng gì không? Có lẽ tôi nên sử dụng "&" khi quét chuỗi? (Tôi đã đọc nó và theo cách tôi hiểu thì không cần thiết phải không?)
Câu hỏi này đã có câu trả lời ở đây: Khoảng trắng trong scanf có nghĩa là gì? [trùng lặp] (6 câu trả lời) Đã đóng 7 năm trước. Mục đích của việc thêm khoảng trắng trong scanf như thế này là gì
Tôi là một lập trình viên xuất sắc, rất giỏi!