我正在使用code :: blocks,當我編譯這個程序時,它沒有顯示任何錯誤,但是當我運行它時,它說convolution.exe已停止工作(即,我將它保存爲convolution.c)知道發生了什麼,任何人都可以幫我這個問題,我的代碼如下我的功能有什麼問題?
#include<stdio.h>
#include<stdlib.h>
#define array_len(x) (sizeof(x)/sizeof(double))
void convolution(double *signal, int nt, double *wind, int r, double *rm)
{
int i,j;
double copy[nt];
for(i=0; i<nt; i++)
{
copy[i] = signal[i];
}
int l = (nt+r-1);
for(i=r;i<=l;i++)
{
wind[i]=0;
}
for(i=nt;i<=l;i++)
{
copy[i]=0;
}
for(i=0;i<=l;i++)
{
rm[i]=0;
for(j=0;j<=i;j++)
{
rm[i] = (rm[i]+(copy[j]*wind[i-j]));
}
}
}
void main()
{
double a[1020];
int i;
for(i=0; i<1020; i++)
{
a[i] = 1;
}
int la = array_len(a);
printf("\nc1\t%d",la);
double b[1020];
for(i=0; i<1020; i++)
{
b[i] = 1;
}
int lb = array_len(b);
printf("\nc2\t%d\n",lb);
double r[la+lb-1];
int lr = array_len(r);
printf("\nc3\t%d\n",lr);
printf("entering convolution\n");
convolution(a,la,b,lb,r);
printf("in main\n\n");
for(i=0;i<(50);i++)
{
printf("rm[%d]=%lf\n",i,r[i]);
}
}
http://stackoverflow.com/questions/16770078/what-is-the-mistake-in-this-program – Jeyaram
您需要使用*調試器*,而不是堆棧溢出。一旦你使用調試器縮小了錯誤,並且* still *無法弄清楚如何解決這個問題,那麼只能轉向Stack Overflow。 –
您可能應該學習如何使用調試器 - 一步一步調試並查看它崩潰的位置 – mvp