在线急等 代码为什么执行不下去解决思路
在线急等 代码为什么执行不下去
//传入要进行傅里叶变换的变量
void CFFT::FFT_test (LPCTSTR c)
{
//CString strAllData="-1.11131700 0 -1.23425700 0 -0.86663300 0 -0.54973000 0";
char input[20480];
int i,n,r;
float xreal[N],ximag[N];
char *p;
sprintf(input, "%s" ,c);
p = input;
i = 0;
while (1)
{
r=sscanf( p, "%f%f%n", xreal + i, ximag + i,&n);
if ( EOF== r)
break;
if ( 2== r)
{
i++;
if (i >= N)
break;
p+=n;
}
}
n = i;
printf("n=%d\n",n); // 要求 n 为 2 的整数幂
for (i=0;i < n;i++)
{
printf("xreal[%d]==%lg,ximag[%d]==%lg\n",i,xreal[i],i,ximag[i]);
}
FFT (xreal, ximag, n);
IFFT (xreal, ximag, n);
}
传进来的变量c是一个很长的数,我测试的数据是有128个strAllData这么长,也就是要传入512个变量,在运行的时候,发现程序到while (1)以后,就一直循环,不会去执行n = i;以后的代码了,请问这是怎么回事,要如何解决呢?????
------解决方案--------------------
if ( EOF== r)
break;
这句改为:
if( p == NULL )
break;
同时移到r=sscanf( p, "%f%f%n", xreal + i, ximag + i,&n);这句的前面
------解决方案--------------------
if (i >= N)
此N非彼n
//传入要进行傅里叶变换的变量
void CFFT::FFT_test (LPCTSTR c)
{
//CString strAllData="-1.11131700 0 -1.23425700 0 -0.86663300 0 -0.54973000 0";
char input[20480];
int i,n,r;
float xreal[N],ximag[N];
char *p;
sprintf(input, "%s" ,c);
p = input;
i = 0;
while (1)
{
r=sscanf( p, "%f%f%n", xreal + i, ximag + i,&n);
if ( EOF== r)
break;
if ( 2== r)
{
i++;
if (i >= N)
break;
p+=n;
}
}
n = i;
printf("n=%d\n",n); // 要求 n 为 2 的整数幂
for (i=0;i < n;i++)
{
printf("xreal[%d]==%lg,ximag[%d]==%lg\n",i,xreal[i],i,ximag[i]);
}
FFT (xreal, ximag, n);
IFFT (xreal, ximag, n);
}
传进来的变量c是一个很长的数,我测试的数据是有128个strAllData这么长,也就是要传入512个变量,在运行的时候,发现程序到while (1)以后,就一直循环,不会去执行n = i;以后的代码了,请问这是怎么回事,要如何解决呢?????
------解决方案--------------------
if ( EOF== r)
break;
这句改为:
if( p == NULL )
break;
同时移到r=sscanf( p, "%f%f%n", xreal + i, ximag + i,&n);这句的前面
------解决方案--------------------
if (i >= N)
此N非彼n