系統給好了通訊錄管理的table 和 通訊錄總數的table;
需要我將 通訊錄的聯系人和電話號碼做冒泡排序;
/* 通訊錄管理table */
typedef struct _cmn_adr_mng_t {
char name[CMN_ADR_NAME_STRMAX]; /* 名前 */
char number[CMN_ADR_TELNUM_STRMAX]; /* 電話番號 */
} cmn_adr_mng_t;
/* 通訊錄管理table */
extern cmn_adr_mng_t cmn_adr_mng_tbl[CMN_ADR_SAVE_MAX];
/* 通訊錄保存總數table */
typedef unsigned short cmn_adr_num_mng_t;
/* 通訊錄保存總數table */
extern cmn_adr_num_mng_t cmn_adr_num_mng_tbl;
下面是我參考別人的代碼,試著寫的,可是這個地方出現了bug;
tmp 和 cmn_adr_mng_tbl[i].number 開頭的地方都出現了紅色波浪號;
想了2個多小時 實在是想不出解決方法;
求助,請指教。
tmp->number = cmn_adr_mng_tbl[i].number;
cmn_adr_mng_tbl[i].number = cmn_adr_mng_tbl[j].number;
cmn_adr_mng_tbl[j].number = tmp->number;
int adr_sort(int mode)
{
int n = cmn_adr_num_mng_tbl;
cmn_adr_mng_t *tmp = (cmn_adr_mng_t*)malloc(sizeof(cmn_adr_mng_t));
switch (mode)
{
case 0:
for (int i = 0; i <n; i++)
{
for (int j = i + 1; j < n; j++)
{
if (strcmp(cmn_adr_mng_tbl[i].name, cmn_adr_mng_tbl[j].name)) {
strcpy(tmp->name, cmn_adr_mng_tbl[i].name);
strcpy(cmn_adr_mng_tbl[i].name, cmn_adr_mng_tbl[j].name);
strcpy(cmn_adr_mng_tbl[j].name, tmp->name);
tmp->number = cmn_adr_mng_tbl[i].number;
cmn_adr_mng_tbl[i].number = cmn_adr_mng_tbl[j].number;
cmn_adr_mng_tbl[j].number = tmp->number;
}
}
}
case 1:
for (int i = 0; i < n; i++)
{
for (int j = i + 1; j < n; j++)
{
if (cmn_adr_mng_tbl[i].number > cmn_adr_mng_tbl[j].number)
{
strcpy(tmp->name, cmn_adr_mng_tbl[i].name);
strcpy(cmn_adr_mng_tbl[i].name, cmn_adr_mng_tbl[j].name);
strcpy(cmn_adr_mng_tbl[j].name, tmp->name);
tmp->number = cmn_adr_mng_tbl[i].number;
cmn_adr_mng_tbl[i].number = cmn_adr_mng_tbl[j].number;
cmn_adr_mng_tbl[j].number = tmp->number;
}
}
}
default:
cmn_err_log(FUNC_NUM_ADR_SORT, __LINE__, OPTION_ERROR);
return A_ADR_OPTION_ERROR;
}
uj5u.com熱心網友回復:
跟普通的冒泡排序一樣,也是比較,交換uj5u.com熱心網友回復:
宣告一個臨時結構體變數,然后遍歷結構體陣列,符合條件就用這個臨時結構體變數進行交換轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/61548.html
標籤:新手樂園
