我和我的小組目前正在爲約會書寫一個簡單的程序,當我試圖在列表中打印數據時,我遇到了一些問題。奇怪的是,如果我用我的電腦運行它,程序可以打印列表中的數據,如果我的組成員正在嘗試在他/她的計算機上運行相同的代碼,它可以打印直到列表中的最後一個數據,然後它墜毀。我們使用的是Windows 8.1/7和代碼塊13.12,我們也嘗試使用unix來運行代碼,但它會產生分段錯誤錯誤。鏈接列表打印在一臺計算機,但不是其他
這裏是,我認爲是相關的問題
typedef struct list
{
int date_start,date_end;
// a_time = appointment time
char a_time[15],what[15],who[15],where[15];
struct list *next;
}L_LIST;
L_LIST *insert (L_LIST *head_pointer, L_LIST data_in)
{
L_LIST *temp = (L_LIST*) malloc (sizeof(L_LIST));
temp->date_start = data_in.date_start;
temp->date_end = data_in.date_end;
strcpy(temp->a_time ,data_in.a_time);
strcpy(temp->what ,data_in.what);
strcpy(temp->who ,data_in.who);
strcpy(temp->where ,data_in.where);
if (head_pointer != NULL) temp->next = head_pointer;
head_pointer = temp;
return(head_pointer);
}
void print_list (L_LIST *head_pointer, int mode, char * s_keyword)
{
int i=1,n_found=0;
int d_start = atoi (s_keyword);
while (head_pointer != NULL) {
if (mode == 1) {
printf(" %d. %d-%d %s %s %s %s\n",i,head_pointer->date_start,\
head_pointer->date_end, head_pointer->a_time,\
head_pointer->what, head_pointer->who, head_pointer->where);
}
else if (mode == 2) {
if (head_pointer->date_start == d_start) {
printf(" Found : %d-%d %s %s %s %s\n",head_pointer->date_start,\
head_pointer->date_end, head_pointer->a_time,\
head_pointer->what, head_pointer->who, head_pointer->where);
n_found++;
}
else if (strcmp(head_pointer->a_time,s_keyword) == 0) {
printf(" Found : %d-%d %s %s %s %s\n",head_pointer->date_start,\
head_pointer->date_end, head_pointer->a_time,\
head_pointer->what, head_pointer->who, head_pointer->where);
n_found++;
}
}
else if (mode == 3) {
FILE* file_pointer = fopen(s_keyword,"a+");
if (file_pointer == NULL) {
file_pointer = fopen (s_keyword,"w+");
fprintf(file_pointer,"\n");
}
fprintf(file_pointer,"%d %d %s %s %s %s\n",head_pointer->date_start,\
head_pointer->date_end, head_pointer->a_time,\
head_pointer->what, head_pointer->who, head_pointer->where);
fclose(file_pointer);
}
head_pointer = head_pointer->next;
i++;
}
}
在print_list功能,模式1是用於打印的所有數據的列表中的在屏幕上的代碼,模式2爲簡單的搜索功能並在屏幕上打印匹配結果,模式3用於將數據打印到txt文件。對於模式2和模式3,它可以在我的計算機和我的朋友計算機上正常工作,但對於模式1,則存在問題,它可以在某臺計算機上使用。我不確定模式1中的代碼有什麼問題。或者在list.txt輸入文件中可能有問題?
1 2 10AM Birthday Sister Home
2 2 10AM Birthday Sister Home
3 2 10AM Birthday Sister Home
4 2 10AM Birthday Sister Home
5 2 10AM Birthday Sister Home
謝謝你的時間:)。
你的代碼中有一個錯誤。 –
@MitchWheat,你知道錯誤先生是什麼嗎?我一直在看代碼,但我找不到錯誤。提前致謝。 – Chamoileon
'if(head_pointer-> date_start == d_start)'??打開執行警告。 – chux