我有一个字符数组(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。你能帮我解决这个问题吗?
答案 0 :(得分:3)
创建primes
时,您知道尺寸吗?如果是这样,那就使用它。否则,您应该自己计算素数,以便知道有多少素数。
此外,代码中不需要变量k
。循环可以缩短为:
for(int i = 0; i < ???; i++) // what do I put instead of ???
{
filtered[i] = data[primes[i]];
}