我正在為播放串列制作一個資料庫程式。用戶可以輸入他們想要添加的播放串列的名稱,但如果該名稱已經存在于結構陣列中,它應該顯示一個提示,說明它已經存在。我撰寫的代碼的問題是,例如,如果 struct 陣列中已經有 3 個值,并且我輸入了一個與 struct 陣列中的第二個或第三個名稱值匹配的字串輸入,它仍然會添加一個新的播放串列,因為由于它與第一個值不匹配,它會轉到 else 陳述句并將字串輸入添加為播放串列名稱。
我想要它做的是遍歷所有現有的結構陣列值,直到找到匹配的值,否則應該將用戶的字串輸入添加到結構陣列中。下面是我寫的函式:
void addPlaylist(struct playlist *playlist, int (*index)){
char temp[50];
printf("What do you want your playlist to be called?: ");
scanf("Is", temp);
if((*index)!=0){
for(int i=0; i<(*index);i ){
if((strcmp(temp, playlist[(i)].name))!=0){
(*index) ;
strcpy(playlist[(*index)].name, temp);
printf("Playlist successfully added!\n");
break;
}else{
printf("%s already exists!\n", playlist[(i)].name);
}
}
} else{
strcpy(playlist[(*index)].name, temp);
printf("Playlist successfully added!\n");
(*index) ;
}
}
uj5u.com熱心網友回復:
掃描整個陣列以查看它是否已經存在,如果存在則設定一個變數,并根據需要設定回傳的索引。如果沒有,則插入。您不需要特殊情況 index == 0 因為陣列上的回圈是空的。就像是:
void addPlaylist(struct playlist *playlist, int (*index)){
char temp[50];
printf("What do you want your playlist to be called?: ");
scanf("Is", temp);
bool found=false;
for(int i=0; i<(*index);i ){
if((strcmp(temp, playlist[(i)].name))==0){/*It matches*/
found=true;
*index=i;
break;
}
}
if(!found){
strcpy(playlist[(*index)].name, temp);
}
}
uj5u.com熱心網友回復:
我想要它做的是遍歷所有現有的結構陣列值,直到找到匹配的值
緊接著return;_printf("%s already exists!\n", playlist[(i)].name);
考慮回傳一個值來指示函式結束的原因。
// void addPlaylist(struct playlist *playlist, int (*index)){
int addPlaylist(struct playlist *playlist, int *index){
assert(playlist && index && *index >= 0); // Handle pathologic cases.
char temp[50];
printf("What do you want your playlist to be called?: ");
// Test return value
if (scanf("Is", temp) != 1) {
return EOF; // No valid input
}
// if ((*index)!=0){ // not needed
for (int i = 0; i < *index; i ) {
// Simplify
if (strcmp(temp, playlist[i].name) == 0) {
printf("%s already exists!\n", playlist[i].name);
return 0; // Nothing added
}
}
strcpy(playlist[*index].name, temp);
printf("Playlist successfully added!\n");
return 1; // Success!
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/488060.html
上一篇:二叉樹的分段錯誤
