【发布时间】:2017-06-14 11:04:12
【问题描述】:
下面的代码是我的任务调度程序的文件读取功能。一切正常,直到它尝试读取代表截止日期的数字序列(例如 1、2、3、4、5)。一些随机数被添加到“截止日期”表中,而不是整数。有谁知道这个问题的解决方案吗?
#include <iostream>
#include <vector>
#include <cstdlib>
#include <fstream>
#include <map>
#include <time.h>
using namespace std;
class Task{
public:
string Name;
int Number;
int Operation_Time_Machine_One;
int Operation_Time_Machine_Two;
int Task_Deadline;
};
int Maximum_Time_Between_IDE;
int IDE_Duration;
int Read_File(){
string FileName= "";
cout << "Please enter file name (with .txt):\t";
cin >> FileName;
std::vector<Task> Task_Vector;
FILE* OpenedFile = fopen(FileName.c_str(),"r");
int Number_Of_Tasks=0;
int Duration_Of_Operation_One =0;
int Duration_Of_Operation_Two =0;
if( OpenedFile == NULL){
exit(EXIT_FAILURE);
}
else{
fscanf(OpenedFile,"%d", &Number_Of_Tasks);
for (int i=0; i<= Number_Of_Tasks;i++){
Duration_Of_Operation_One=0;
Duration_Of_Operation_Two=0;
fscanf(OpenedFile, "%d, %d", &Duration_Of_Operation_One, &Duration_Of_Operation_Two);
Task New_task;
New_task.Name ="task" ;
New_task.Number = (i+1);
New_task.Operation_Time_Machine_One = Duration_Of_Operation_One;
New_task.Operation_Time_Machine_Two = Duration_Of_Operation_Two;
New_task.Task_Deadline =0;
Task_Vector.push_back(New_task);
}
fscanf(OpenedFile,"%d", &Maximum_Time_Between_IDE);
fscanf(OpenedFile,"%d", &IDE_Duration);
int Deadlines[Number_Of_Tasks];
//from now it's gettig weird
for(int i=0; i<=Number_Of_Tasks;i++){
fscanf(OpenedFile,"%d, ", &Deadlines[i]);
}
for(int i=0; i<=Number_Of_Tasks;i++){
cout<<Deadlines[i]<<endl;
}
}
fclose(OpenedFile);
return 0;
}
int main()
{
clock_t time;
time = clock();
std::cout << "Hello world!" << std::endl;
Read_File();
time = clock() - time;
printf ("Time of algorithm %f seconds.\n",((float)time)/CLOCKS_PER_SEC);
return 0;
}
示例输入:
5
74, 64
27, 74
69, 47
35, 54
101, 86
102
6
113, 242, 344, 144, 513
【问题讨论】:
-
您发布了太多不相关的代码。请创建一个 MVCE stackoverflow.com/help/mcve
-
fscanf()返回一个表示成功的值。代码输入有问题 --> 检查fscanf()的返回值。 -
像你建议的那样,我检查了,当它进入循环时,文件有错误代码 msvcrt!_iob+95?
-
顺便说一句,C++ 中不需要
fsanf。见stackoverflow.com/a/10283841/2721583