我知道我必須忽略簡單的事情。我有一個程序,讓用戶通過顯示每個探針的索引來觀察不同的搜索算法如何探測數組。我有一個傳遞給排序算法函數的指針,並且它應該被賦予搜索到的編號所在的索引號。然後指針在另一個函數中使用,以顯示找到哪個索引值(如果找到)。 (C - 指向數組索引號的指針
我在函數中得到運行時錯誤,顯示找到該值的索引。(search_results
)(當搜索到的數字不在數組中時,程序運行良好)它必須是一個簡單的錯誤,但我認爲一組新的眼睛可能會有所幫助。
一切都是int
,除了found_status
其是char
這裏是主()的代碼。 (必需的東西)
int *p_return_index = NULL;
/* Fill arrays with data */
fill_array(seq_data, max_index);
fill_array(prob_data, max_index);
fill_array(bin_data, max_index);
while(printf("\n\n\nEnter an integer search target (0 to quit): "),
scanf("%d", &searched_number), searched_number != 0)
{
printf("\n\n");
printf("\nOrdered Sequential Search:");
show_data(seq_data, max_index, searched_number);
if(ordered_seq_search(seq_data, max_index, searched_number, p_return_index) == 1)
{
found_status = 'S';
search_results(found_status, p_return_index);
}
else
{
found_status = 'U';
search_results(found_status, p_return_index);
}
這是指針傳遞給指定索引的地方。
int ordered_seq_search(int array[], int max_index, int searched_number, int *p_return_index)
{
int index = 0;
printf("\n Search Path: ");
while (index < max_index && searched_number != array[index] &&
searched_number > array[index])
{
printf("[%2d]", index);
index++;
}
if(searched_number == array[index] != 0)
{
p_return_index = &index;
return 1;
}
else
return 0;
}
這就是錯誤發生的地方。
void search_results(char found, int *p_return_index)
{
printf("\nSearch Outcome: ");
if(found == 'S')
printf("Successful - target found at index [%2d]", *p_return_index);
//I get the error at the line above.
if(found == 'U')
printf("Unsuccessful - target not found");
if(found != 'S' && found != 'U')
printf("Undetermined");
return;
}
如果有人能找出什麼是錯的,那對我來說會是一個很大的幫助。如果您需要更多信息,請發表評論,我會盡快回復。
它的工作!謝謝您的幫助。 –