gpt4 book ai didi

c++ - 从文件 .txt 中读取数据

转载 作者:行者123 更新时间:2023-11-28 01:14:34 24 4
gpt4 key购买 nike

我这里有一个 C++ 代码。这段代码是计算一些文件里面的数据。

#include<stdio.h> 
#include<iostream>
#include <fstream>
using namespace std;

int main(){
//initiate file variable
ifstream inFile;
//other variable
int count, limit=30, time, remain, flag=0, time_quantum, arrival_time=30, var, total_process[30], data;
int wait_time=0, turnaround_time=0, rt[30], num_of_interrupts=0, num_of_jobs=0;


cout<<"Your job list :\n";

for(var = 1; var <= limit; var++){

//the purpose is the check weither looping is okay or not
cout<<""<<var;

//preparing array for the file
char nambuf[30];

std::snprintf(nambuf, sizeof(nambuf), "job%d.txt", var);
std::ifstream inFile;

//open file
inFile.open(nambuf);

//check file
if (!inFile) {
cout << " Unable to open file";
exit(1); // terminate with error
}

//read data from file .txt
while (inFile >> data) {
//calculate total process from data
total_process[var] += data;
++data;
}

//close file
inFile.close();

//print total process
cout << " Sum = " << total_process[var] << endl;
}

return 0;

代码按预期运行。但是在执行全过程计算后出现问题。输出示例:

It give some improper value

如果代码设计不好,我们深表歉意。我还是编程新手。

最佳答案

有一些问题。

1) C++ 中的数组是从 0 开始索引的,而不是从 1 开始的。这意味着当你有一个包含 30 个元素的数组时,允许的索引是从 0 到 29。但是在你的循环中 var从 1 迭代到 30,因此最后一次迭代尝试使用 total_process[30]当最后一个“真正”可访问的元素是 total_process[29] 时.此类错误可能很难调试,因为当您在数组范围外写入元素时,您会破坏周围的内存,因此您可以通过这种方式更改其他一些变量。要解决此问题,请使用 for (var = 0; var < limit; var++) 进行迭代, 或使用 var - 1像这样的索引:total_process[var - 1] .

2) 基本类型的变量和数组,例如int默认情况下未初始化,您不应访问此类未初始化的变量。始终确保当您使用某个变量时,它已经有一些赋值。您可以使用像 int arr[30] = {0}; 这样的零来初始化数组。 , int arr[30] = {}int arr[30]{} .

还要小心,不要与第一种初始化数组的方法混淆:

int arr[30] = {1};

这不会用 1 初始化所有元素,而只是初始化 arr[0]为 1,所有其他元素为 0。它之所以有效,是因为您可以这样做:

int arr[30] = {1, 2, 3, 4, 5}; // all other will be 0

关于c++ - 从文件 .txt 中读取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59124745/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com