我目前正在編寫該書調試藝術。我已經輸入了第一個練習的代碼,我應該接收輸出到終端。當我運行該程序時,什麼都不顯示。但是,當我查看GDB中的變量時,我可以正確看到參數的值。沒有輸出顯示到終端,但值顯示在GDB
主要問題是print_results()
函數。它不會打印任何內容。誰能幫忙?我已經在運行Linux的兩臺不同機器(Debian和Lubuntu)上嘗試了這一點。
下面的代碼:
// insertion sort, several errors
// usage: insert_sort num1 num2 num3 ..., where the num are the numbers to
// be sorted
#include <stdio.h>
#include <stdlib.h>
int x[10], // input array
y[10], // workspace array
num_inputs, // length of input array
num_y = 0; // current number of elements in y
void get_args(int ac, char **av)
{ int i;
num_inputs = ac - 1;
for (i = 0; i < num_inputs; i++)
x[i] = atoi(av[i+1]);
}
void scoot_over(int jj)
{ int k;
for (k = num_y; k > jj; k--)
y[k] = y[k-1];
}
void insert(int new_y)
{ int j;
if (num_y == 0) { // y empty so far, easy case
y[0] = new_y;
return;
}
// need to insert just before the first y
// element that new_y is less than
for (j = 0; j < num_y; j++) {
if (new_y < y[j]) {
// shift y[j], y[j+1],... rightward
// before inserting new_y
scoot_over(j);
y[j] = new_y;
return;
}
}
// one more case: new_y > all existing y elements
y[num_y] = new_y;
}
void process_data()
{
for (num_y = 0; num_y < num_inputs; num_y++)
// insert new y in the proper place
// among y[0],...,y[num_y-1]
insert(x[num_y]);
}
void print_results()
{
int i;
for(i=0; i < num_inputs; i++)
printf("%d\n", y[i]);
}
int main(int argc, char ** argv)
{ get_args(argc,argv);
process_data();
print_results();
}
由於提前, 傑西
你如何運行該程序?它需要參數進行分類和打印,所以用「 1 2 3 4」打印效果很好。見[demo](http://coliru.stacked-crooked.com/a/0d8885a5cfa02da7) –
Mine