دیباگ ارور R6010 - abort() has been called برای چیه و چه جوری رفع میشه؟ - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

دیباگ ارور R6010 - abort() has been called برای چیه و چه جوری رفع میشه؟

+1 امتیاز
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <time.h>
#include <string>
#include <vector>
#include "st_cou_gra_pro.h"
#include "students.h"
#include "registers.h"
#include "course.h"
#include "professor.h"
#include "pro_menu.h" 
#include <algorithm>

using namespace std;

//
int main()
{
	//
	create_student_file();
	//
	cout<<"* Press any key for starting."<<endl;
	//
	cin.get();

	system("CLS");
	//
	pro_menu menu_of_prog;
	menu_of_prog.Menu1();
	//
	return 0;
}//end main

با اضافه کردن تابع دوست کلاس student یعنی create_student_file به این ارور بر می خورم.

 

#include "stdafx.h"
#include "professor.h"
#include <string>
#include <vector>
#include <iostream>
#include <fstream>

using namespace std;

professor::professor(void)
{
	 name=lastname=pro_id=pro_field=pro_degree=pro_date="";
}


professor::~professor(void)
{
}


//return professor date
string  professor:: get_pro_date(void)
{
	return pro_date;
}

//return professor id
string	professor:: get_pro_id(void)
{
	return pro_id;
}


//return professor name
string	professor:: get_pro_name(void)
{
	return name;
}


//return professor last name
string	professor:: get_pro_lastname(void)
{
	return lastname;
}


//return professor feild name
string	professor:: get_pro_field(void)
{
	return pro_field;
}


//return professor degree name
string	professor:: get_pro_grade(void)
{
	return pro_degree;
}


//read professor information from professor.txt file
void  read_professor_file(vector <professor> &vec)
{
	//
	int i=0;
	int num=0;//number of student in file 
	string str;
	string str1;
	professor temp;
	ifstream fp("professor.txt");//open professor file for read information on professor
	if(!fp)//check for file opening 
	{
		cerr<<"File can't open."<<endl;
		exit(1);
	}
	fp>>num;//read number of professor
	for(i=0;i<num;i++)
	{
		vec.push_back(temp);
		fp>>str;
		vec.at(i).name=str;
		fp>>str;
		vec.at(i).lastname=str;
		fp>>str;
		vec.at(i).pro_id=str;
		fp>>str;
		vec.at(i).pro_field=str;
		fp>>str;
		if(str.compare("assistant")==0 || str.compare("associate")==0 )
		{
			fp>>str1;
			str=str + " " +str1;
		}
		vec.at(i).pro_degree=str;
		fp>>str;
		vec.at(i).pro_date=str;
	}
	fp.close();
	//
}

void   professor::  set_pro_name(string str)
{
	name=str;
}
void   professor::   set_pro_lastname(string str)
{
	lastname=str;
}
void   professor::  set_pro_id(string str)
{
	pro_id=str;
}
void   professor::  set_pro_field(string str)
{
	pro_field=str;
}
void   professor::  set_pro_degree(string str)
{
	pro_degree=str;
}
void   professor:: set_pro_date(string str)
{
	pro_date=str;
}

void create_professor_file()
{
	vector  <professor>  vec;
	professor  pro;
	cout<<"Number of professor  :";
	int number;
	cin>>number;
	//
	for(int i=0 ; i<number ; i++)
	{
		cout<<"Name      :";
		cin>>pro.name;
		cout<<"Last name :";
		cin>>pro.lastname;
		cout<<"Id        :";
		cin>>pro.pro_id;
		cout<<"Field     :";
		cin>>pro.pro_field;
		cout<<"Degree    :";
		cin>>pro.pro_degree;
		cout<<"Date      :";
		cin>>pro.pro_date;
		cout<<endl;
		//
		vec.push_back(pro);
	}
	//
	ofstream fp("professor.txt");
	if(!fp)
	{
		cerr<<"File can't open"<<endl;
		exit(1);
	}
	//
	fp<<number;
	fp<<endl;
	//
	for(int i=0 ; i<number ; i++)
	{
		fp<<endl;
		fp<<vec.at(i).name<<endl
			<<vec.at(i).lastname<<endl
			<<vec.at(i).pro_id<<endl
			<<vec.at(i).pro_field<<endl
			<<vec.at(i).pro_degree<<endl
			<<vec.at(i).pro_date<<endl;
	}
	//
}

 

سوال شده دی 23, 1392  بوسیله ی Zohre (امتیاز 20)   1 2 5
ویرایش شده دی 24, 1392 بوسیله ی Zohre
بدون دیدن کدی که نوشتید نمیشه چیزی گفت .
دوست عزیز حالا ببین میشه کاری کرد؟
َسلام همین جوری که خودتون گفتین مشکل از اون    create_student_file هست
main ّبرنامه شما اطلاعات خاصی داخلش نیست شما باید  کد های مربوط به  این تابع و کلاس student رو بزارین
این اروری که می گین به هر علتی می تونه باشه (پیدا نکردن فایل - استفاده از فایلی که درست باز نشده - استفاده از اندیس اشتباه در آرایه یا وکتور و .... )
سلام مرسی مشکلم حل شد.اشکال تو نوشتن تابعم بود فکر کنم اشتباه نوشتن اندیس وکتور بود .
یه سوال دیگه داشتم چه طوریه که فایل تو مسیر برنامه هست اما برای خوندنش تو برنامه باز نمیشه و به ارروری که برای پیدا نکردن فایل کد زدیم بر می خوریم؟ (با تشکر)
یا برنامه دسترسی لازم برای باز کردن فایل رو نداره یا محلی که وارد کردین اشتباست.
سلام برنامه رو در ادامه گذاشتم.تو ی اجرای برنامه create می کنه ولی برای خوندنش File can't open!!!!!!!!
میشه لطفا بگید اشکال از کجاست؟

1 پاسخ

+3 امتیاز
 
بهترین پاسخ

شما یک بار این خط رو عوض کن  به جاش این بزار :(ofstream به جای ifstream)

    ofstream fp("professor.txt");

ببین محلی که professor.txt رو میسازه کجاست بعد بیا توی همین محل فایل professor.txt رو قرار بده .

در ضمن بهتره که با استفاده از API های ویندوز محل فایل exe رو دست بیاری بعد بر اساس اون ادرس بدی .

#include <windows.h>
#include <iostream>

int main()
{
    char path[MAX_PATH];
    HMODULE hModule = GetModuleHandle(NULL);
    if (hModule != NULL)
    {
        GetModuleFileName(hModule,path, (sizeof(path)));
    }

     std::cout << path ;
}

 

پاسخ داده شده دی 25, 1392 بوسیله ی BlueBlade (امتیاز 15,315)   15 18 89
انتخاب شد دی 25, 1392 بوسیله ی Ali Rahbar
خیلی متشکر دوست عزیز. خیلی کمک کردی
...