私は現在、「The Art of Debugging」の書籍で作業しています。私はこの最初の練習のためのコードを入力しました、そして、私は端末に出力を受け取るべきです。プログラムを実行すると、何も表示されません。しかし、GDBの変数を見ると、パラメータの値を正しく見ることができます。端末に出力は表示されませんが、値はGDBに表示されます
主な関心事はprint_results()
です。スクリーンには何も印刷されません。誰も助けることができますか?私は、Linuxを実行する2つの異なるマシン(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"で実行すると、結果がうまく印刷されます。 [デモ](http://coliru.stacked-crooked.com/a/0d8885a5cfa02da7)を参照してください –
Mine