Không CT chạy vẫn ok mà đến khúc lấy cái HP và attack thì ko hiểu sao nó ko chịu lấy
Fscanf chỉ đọc %s mà không đọc được %d?
xin nguyên code bạn ơi Chứ code trên của bạn nhìn ko có sai.
Code của mình thi chắc chắn sẽ có sai nhưng mà ý của minh chỉ là đoạn trên thôi .
cho xin file .txt luôn
gõ 1 2 dòng debug đi 1 dòng được thì tất cả đều được mà.
gõ đại test thử cũng được ?
-
Phải là file txt của em đang dùng. Gõ có thể sẽ khác với file input của em.
-
Em nhớ sử dụng markdown để post code, không cần phải post lên ideone.
-
Ở đây là diễn đàn, em nên post 1 post đủ dài, có đầy đủ nội dung. Không nên post 1 câu rồi gửi lên, post thêm 1 câu nữa. Nó giống chat trên FB lắm.
Tại sao Học cấp phát (Capphat2) rồi mà không sử dụng
đọc thiếu 1 chỉ số rồi. 5 chỉ số mới tới tên skill.
Học định làm DSLK hả? sao struct không có phần liên kết, có mỗi phần nội dung không vậy?
Mình phải sử lý cái fscanf trước rồi mới tới cái đó chứ @@
Ko dùng con trỏ BT thôi chứ DS lien kết gì đâu ??
XIn lỗi anh Đạt có lẽ em vẫn chưa quen anh thông cảm cho em
xử lí fscanf?
mỗi dòng đọc xong thì phân biệt như thế nào? Vì mình chỉ thấy đọc rồi cấp phát lại thôi?
Không sao, anh chỉ nhắc nhở vì anh muốn diễn đàn mình thật chất lượng. Có chất lượng thì mới có nhiều người hỏi và nhận được nhiều câu tra lời cũng chất lượng luôn.
Hôm nay cty bận quá anh không giúp được, cái hàm fscanf nó có vấn đề là nhiều khi nó bị dính khoảng trống, tab. Em phải sử lý mấy cái đó nữa. Kiểm tra lại xem lúc em đọc số vào, em có đọc được số hay không? Hay em đọc vào khoảng trắng.
fscanf nó chỉ đọc thôi, nó không “thông minh” lắm đâu.
Sao nhiều người dùng *& nhỉ :? ko có *& bạn nhé
Với lại bạn làm sai rồi. Nếu ko bạn cứ dùng mảng, chứ đừng danh sách liên kết. Bạn code như vật hầu hết ai đọc vô cũng tưởng là bạn đang xài dslk hết :> Và việc cấp phát như vậy không tăng thêm phần tử của con trỏ
Nói ở trên, ko đọc hết buffer. Bạn chưa đọc 4 cái skill kia. -> 4 cái đó vẫn còn ở đó. Nên khi bạn cấp phát lại, đọc lại các biến name, type, hp, att,def … thì nó đọc theo thứ tự name, type,hp,att. name và type là 2 biến chuỗi nên ok. đọc đc chuỗi đó, nhưng HP và ATT lại là 2 biến số, nên nó ko đọc được chuỗi -> tạch
Trừ khi bạn bỏ 4 cái tên skill cuối cùng trên 1 hàng kia mà nó vẫn ko đọc đc. Lúc đó tính tiếp :>
Test ở trên file luôn và ko có lỗi ^^
không hiểu nhau thì code luôn.
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#define MLEN 20
typedef struct PET
{
char type[MLEN];
char name[MLEN];
int HP;
int attack;
int defense;
int chisophu;
int nSkill;
char** skill;
PET * next;
};
typedef struct PET P;
void Capphat1(P *&DanhSach)
{
DanhSach = (P *)malloc(sizeof(P));
}
void Capphat2(char **&Skill)
{
Skill = (char **)calloc(4, sizeof(char));
for( int i = 0 ; i < 4 ; i++)
Skill[i] = (char *)calloc(19,sizeof(char));
}
void main()
{
P *a;
Capphat1(a);
P *head;
head=a;
int i;
int STT=0;
FILE *DS = fopen("test.txt","rt");
while ( !feof(DS) )
{
fscanf(DS , "%s ", a->name);
fscanf(DS , "%s ", a->type);
fscanf(DS , "%d ", &a->HP);
fscanf(DS , "%d ", &a->attack);
fscanf(DS , "%d ", &a->defense);
fscanf(DS , "%d ", &a->chisophu);
fscanf(DS , "%d ", &a->nSkill);
Capphat2(a->skill);
for (i=0;i<4;i++)
fscanf(DS , "%s ", a->skill[i]);
STT++;
Capphat1(a->next);
a=a->next;
}
fclose(DS);
a=head;
// xuat.
while (STT!=NULL)
{
printf("\n%s", a->name);
printf("\n%s", a->type);
printf("\n%d", a->HP);
printf("\n%d", a->attack);
printf("\n%d", a->defense);
printf("\n%d", a->chisophu);
printf("\n%d", a->nSkill);
for (i=0;i<4;i++)
printf("\n%s ", a->skill[i]);
STT--;
a=a->next;
}
getchar();
getchar();
}
Cảm ơn mọi người nhiều
mình cũng đang tập tành DSLK nên có chút rối nhẹ
Cảm ơn Rok_Hoàng Đã thông cho mình cái DSLK
@Thai_Hoc_Nguyen DNH cho phép reply nhiều người cùng một post đấy, không cần reply nhiều lần đâu. Em muốn reply cho ai, chỉ cần bôi cái đoạn muốn reply rồi bấm reply thôi.
Videos này có hướng dẫn đấy:
Còn chính xác muốn xem thì ở 5 phút 9 s có nói tới.
Topic này đã được trả lời nên anh sẽ cho nó tự động close sau 6h nữa nhé.
Cảm ơn anh . Phiền anh quá
This topic was automatically closed after 6 hours. New replies are no longer allowed.