我有一个.txt
,其中包含一些十六进制数字,我将它们放入一个带ifstream
的数组中。但是,它打印不正确,我的意思是,这些数字并不合适。这是我的代码:
void arrayNumbers(unsigned int longSize, unsigned int array[]) {
file.open("hex.txt");
int i;
if(file){
longSize=4;
array[longSize];
for(int i=0;i<longSize;i++){
file >> hex >> array[i];
cout << array[i]<< endl;
}
cout << "RIGHT" << endl;
}
else
cout << "WRONG" << endl;
file.close();
}
在main()
,我有:
void main() {
unsigned int array[longSize];
unsigned int longSize=4;
arrayNumbers(longSize,array);
cout << "OK" << endl;
}
这里发生了什么? T形
答案 0 :(得分:2)
longSize=4;
array[longSize];
这个位完全错了。你在这里想要做的事情是你不能做的:
array[longSize]
)longSize
)请考虑使用std::vector
。
此外,您的main
会返回void
而不是int
(格式不正确),而main
内的数组又有另一个运行时变量的大小,在数组后声明!
最后,我强烈建议使用传统的缩进和大括号格式,因为它很奇怪并且使代码难以阅读。
答案 1 :(得分:0)
错误可能是您在打印数字之前未将hex
传递给cout
。
如果稍微清理一下你的程序:
#include <iostream>
#include <fstream>
using namespace std;
void arrayNumbers(unsigned int longSize, unsigned int array[]) {
fstream file("hex.txt");
if (file){
for (int i = 0; i < longSize; i++){
file >> hex >> array[i];
cout << hex << array[i] << endl;
}
cout << "RIGHT" << endl;
} else {
cout << "WRONG" << endl;
}
}
void main() {
const size_t longSize = 4;
unsigned int array[longSize];
arrayNumbers(longSize, array);
cout << "OK" << endl;
}