使用数组过滤数组

时间:2014-03-25 11:57:24

标签: c arrays sigsegv

我有一个字符数组(data []),我只需要过滤那些索引为素数的字符。字符数组(data [])最多可包含1000 * 1000 * 3个元素。现在,我从函数中获得2到1000 * 1000 * 3的素数列表,并将其存储在全局定义的数组(primes [])中。如何使用它来过滤出data []数组?到目前为止,这是我的代码:

int k = 0;
char filtered[] = {0}; // I don't know what to put between the [ ] brackets.
for(int i = 0; i < ???; i++) // what do I put instead of ???
{
    filtered[i] = data[primes[k]];
    k++
}

for(int i = 0; i < len; i++)
    printf("%c\n", filtered[i]);

但是这段代码显然给了我SIGSEGV。你能帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:3)

创建primes时,您知道尺寸吗?如果是这样,那就使用它。否则,您应该自己计算素数,以便知道有多少素数。

此外,代码中不需要变量k。循环可以缩短为:

for(int i = 0; i < ???; i++) // what do I put instead of ???
{
   filtered[i] = data[primes[i]];
}