我通常在編寫程序時使用輸入文件,以免我一次又一次地輸入數字。如何在gdb中使用輸入文件
這裏是我寫的快速排序的一些地方是給我段錯誤
#include<stdio.h>
int partition (int *,int,int);
void quicksort (int *,int,int);
int main()
{
int i,j,a[15],choice;
int length;
printf("Entering numbers in array \n");
for(i=0;i<=14;i++)
scanf("%d",&a[i]);
printf("the sorted array is\n");
length=sizeof(a);
quicksort(a,0,length-1);
for(i=0;i<=14;i++)
printf (" %d ",a[i]);
}
int partition(int *num,int p,int r)
{
int x,j,i,temp;
x=num[r];
i=-1;
for(j=0;j<=r-1;j++)
{
if(num[j]<=x)
{
i=i+1;
temp=num[i];
num[i]=num[j];
num[j]=temp;
}
}
num[i+1]=num[r];
return i+1;
}
void quicksort (int *num,int p,int r)
{
int q;
if (p<r)
{
q=partition(num,p,r);
quicksort(num,p,q-1);
quicksort(num,q+1,r);
}
}
這裏的程序input.txt中
43 12 90 3 49 108 65 21 9 8 0 71 66 81
我輸入文件時II編譯如下
cc quicksort.c
./a.out < input.txt
現在我得到的輸出是
Entering numbers in array
the sorted array is
Segmentation fault
我想知道的是我經常使用gdb來調試這樣的問題。 是否有可能在gdb我從同一個文件的輸入input.txt中
我設置爲使用gdb命令是
cc -g quicksort.c
gdb
GNU gdb (GDB) 7.1-ubuntu
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
(gdb) file a.out
(gdb) break quicksort.c:3
(gdb) run
現在我想知道的是怎麼用的輸入什麼文件在gdb中,這樣我就不再輸入我想輸入的數組了?
[如何將gdb與輸入重定向一起使用?](http:// stackoverflow。問題/ 4758175 /如何使用GDB與輸入重定向) – Alex