C++ 运行时故障

C++ 运行时故障,c++,openmp,C++,Openmp,参见代码,问题之后 #include <iostream> #include <cstdio> bool prime(unsigned long long num); int main(){ unsigned long long temp; unsigned long long max = 600851475143; FILE * fptr; try{ fptr = fopen("primes.txt","w"); #pragma omp parallel for

参见代码,问题之后

#include <iostream>
#include <cstdio>

bool prime(unsigned long long num);

int main(){
unsigned long long temp;
unsigned long long max = 600851475143;
FILE * fptr;

try{
fptr = fopen("primes.txt","w");

#pragma omp parallel for
for(unsigned long long i = 2; i<max;i++){
    if(prime(i)){
        temp = i;
        fputs(i + ",",fptr);
        //int percent = (int)((float)i)/((float)max);
        //if(percent > 1 && (percent % 10 == 0)){
        //  std::cout << "Percent Complete: " << percent << std::endl;
        //}
    }
}
std::cout << temp << std::endl;
fclose(fptr);
}catch(...){
    std::cout << "Exception!" << std::endl;
}
return 0;
}

bool prime(unsigned long long num){
for(unsigned long long i = 2;i<num;i++){
    if(num%i == 0)
        return false;
}
return true;
}
#包括
#包括
布尔素数(无符号长数);
int main(){
无符号长-长温度;
无符号长-长最大值=600851475143;
文件*fptr;
试一试{
fptr=fopen(“primes.txt”,“w”);
#pragma-omp并行
对于(无符号长i=2;i 1&&(百分比%10==0)){

//std::cout您在这里犯了一个错误:

fputs(i + ",",fptr);

fPATS得到const char作为第一个参数。在“const char”中添加整数值“i”,“Value.这个表达式i+”,“i”变大时,将指向一个无效的内存块,因为C++中没有重载运算符'+',它将一个整数与一个指向char缓冲器

的const指针串联起来. 您可以改用sprintf函数:

char buf[256] = {0};
sprintf(buf, "%d, ", i);
或者,只需fprintf,它将把字符串直接写入文件


另外,我建议您关闭try{..}之外的文件句柄捕获块。否则,在异常情况下,您的文件将不会被关闭

您的猫在您的键盘上走了吗?这里发生了什么事?您可以格式化您的问题吗?@KerrekSB猫有不同的模式…我想是蛇在长跑,就是这样,最后使用了sprintf。现在我的计算机几乎没有响应,因为他96%的负载哈哈!哦,很抱歉问题看起来是这样的,这就是文本文件中的结果,看起来就像那样。