我正在制作一个多线程程序来查找C中的素数。如何在下面的C程序中输入一个输入而不使用(#define =88)?我得到了以下错误:
main.c:8:7: error:预期声明说明符或“.”字符串常量扫描前(“%d”,&N);^~
#include <stdio.h>
#include <pthread.h>
#include <conio.h>
#define MAX_THREADS 4
int N;
scanf("%d", &N);
int prime_arr[N]={0};
void *printprime(void *ptr)
{
int j,flag;
int i=(int)(long long int)ptr;
while(i<N)
{
printf("Thread id[%d] checking [%d]\n",pthread_self(),i);
flag=0;
for(j=2;j<=i/2;j++)
{
if(i%j==0)
{
flag=1;
break;
}
}
if(flag==0 && (i>1))
{
prime_arr[i]=1;
}
i+=MAX_THREADS;
}
}
int main()
{
pthread_t tid[MAX_THREADS]={{0}};
int count=0;
for(count=0;count<MAX_THREADS;count++)
{
printf("\r\n CREATING THREADS %d",count);
pthread_create(&tid[count],NULL,printprime,(void*)count);
}
printf("\n");
for(count=0;count<MAX_THREADS;count++)
{
pthread_join(tid[count],NULL);
}
int c=0;
for(count=0;count<N;count++)
if(prime_arr[count]==1)
printf("%d ",count);
return 0;
} 发布于 2020-04-07 10:55:11
不能有函数之外的一般语句。
简单的解决方案是读取main函数中的输入,然后在main函数中创建数组。
并将数组保持为函数中的局部变量,并将其作为参数传递给要调用的函数(连同其大小)。
若要将多个参数聚集到线程函数中,请创建一个以“参数”为成员的结构,并传递指向此类结构的指针。
https://stackoverflow.com/questions/61078323
复制相似问题