[Question] lập trình C: tìm lỗi cho hàm ? |
13/06/2010 12:34:37 (+0700) | #1 | 213202 |
|
panfider
Member
|
0 |
|
|
Joined: 12/05/2010 01:51:04
Messages: 448
Offline
|
|
mình tìm hiểu về C, thì gặp chút rắc rối. Khi viết hàm duplicate char *list[] thì có lỗi. Mã của hàm này như sau:
phần mảng các con trỏ liền kề với phần data. Có thể thấy rõ khi mình dùng hàm malloc
file test: http://piece-of-c.googlecode.com/files/demo.c
Code:
/*
*/
char **flatstr(char **list,int nmemb){
int nrbyte=0,r=0;
void *pt=NULL;
int nr=nmemb;
while(--nr){
int i=strlen(list[nr]);
nrbyte+=++i;
}
pt=malloc(/*header*/nmemb*(sizeof(char *)+1)+/*data*/nrbyte+1);
arr[nmemb]=NULL; //terminate pointer
/*
setup pointer
what we have here is array of pointer has shape:
char *arr[nmemb]; //in header site
*/
nr=nmemb;
char **arr=(char **)pt;
int pos=nmemb*sizeof(char *)+sizeof(char *);
while(--nr){
arr[r]=(char*)(arr+pos);
pos=pos+strlen(list[r]);pos++;
r++;
}
/*now I copy*/
nr=nmemb;
r=0;
while(--nr){
strcpy(arr[r],list[r]);
r++;
}
return arr;
}
bạn nào debug giùm mình chuơng trình này nha! |
|
[Unix] live free or die
|
|
|
|
[Question] lập trình C: tìm lỗi cho hàm ? |
13/06/2010 22:09:03 (+0700) | #2 | 213232 |
|
H3x4
Member
|
0 |
|
|
Joined: 02/04/2009 00:03:16
Messages: 242
Offline
|
|
Mình thấy code rối quá, đọc hơi khó hiểu! Mà mục đích của bạn chỉ là clone cái mảng 2 chiều list để ret thành cái mới thôi đúng không? Nếu vậy thì đâu cần phức tạp như vậy đâu nhỉ?? |
|
|
|
|
[Question] lập trình C: tìm lỗi cho hàm ? |
16/06/2010 21:49:14 (+0700) | #3 | 213475 |
|
panfider
Member
|
0 |
|
|
Joined: 12/05/2010 01:51:04
Messages: 448
Offline
|
|
ừ! đúng rùi. Nhưng chuơng trình chạy sai.
Mã không có comment what going to do nên hơi khó hiểu chung chung làm cái gì. |
|
[Unix] live free or die
|
|
|
|
[Question] lập trình C: tìm lỗi cho hàm ? |
20/06/2010 19:16:56 (+0700) | #4 | 213768 |
TQN
Elite Member
|
0 |
|
|
Joined: 29/06/2006 22:28:01
Messages: 888
Location: Biết làm chi ?
Offline
|
|
Bó tay cậu này luôn, đi xin việc C, rồi đòi viết OS riêng, libc riêng, vậy mà lại quăng lên 1 cái hàm C như một đống rác, nhờ debug giùm. Ít nhất hàm quăng lên và file code của cậu phải được modify lại cho rõ ràng chứ, coding style thống nhất chứ, không có comment thì cậu comment vô, rồi phải build được chứ.
Chả lẽ cứ đi copy&paste, ăn cắp code mà không hiểu chút gì cả à, vậy thì làm sao build OS, libc riêng được ????????????? |
|
|
|
|
[Question] lập trình C: tìm lỗi cho hàm ? |
20/06/2010 19:45:29 (+0700) | #5 | 213772 |
StarGhost
Elite Member
|
0 |
|
|
Joined: 29/03/2005 20:34:22
Messages: 662
Location: The Queen
Offline
|
|
@panfider: mình nhớ là mình có gửi cho bạn một tài liệu về phong cách viết chương trình C. Ngoài ra, mình đề nghị bạn tìm cách cải thiện tiếng Anh của bản thân. Một chương trình + lỗi đơn giản thế này mà bạn không debug ra thì mình không hiểu độ tin cậy của các đoạn mã của bạn là được bao nhiêu. |
|
Mind your thought. |
|
[Question] lập trình C: tìm lỗi cho hàm ? |
21/06/2010 10:26:55 (+0700) | #6 | 213806 |
|
panfider
Member
|
0 |
|
|
Joined: 12/05/2010 01:51:04
Messages: 448
Offline
|
|
hiện giờ vẫn chưa Debug được. Nhưng StarGhost khó tính quá. |
|
[Unix] live free or die
|
|
[Question] lập trình C: tìm lỗi cho hàm ? |
21/06/2010 11:05:11 (+0700) | #7 | 213809 |
greintell
Member
|
0 |
|
|
Joined: 23/12/2009 03:14:44
Messages: 4
Offline
|
|
Commenting helps you organize your thoughts and keeps you in practice when you go into the real world.
|
|
|
|