【发布时间】:2017-11-01 21:00:31
【问题描述】:
当我将文件添加到 char 数组然后打印时,我得到垃圾输出(随机 ASCII 符号)。该文件仅包含文本(一段)。
代码如下:
int arraySize = 0;
string line;
while(getline(inFile, line)){
//cout << line << endl; // this will print array fine.
arraySize += line.length();
}
char message[arraySize];
char encrypted[arraySize];
//adds file to array
int i = 0;
while(inFile.good() && !inFile.eof()){
inFile.get(message[i]);
i++;
}
message[i] = '\0';
//prints array
for(int i = 0; i < arraySize; i++){
cout << message[i]; //this returns garbage values
}
我相信它的打印垃圾,因为它认为数组消息中没有任何内容,但我不知道为什么“什么都没有”。
【问题讨论】:
-
您不会在两组读取之间重置文件,因此您不会将任何内容放入
message。您正在打印分配时剩余的垃圾。 -
@Ron 将文件内容添加到 char 数组中。因此,如果文件包含“hello world”,它将进入一个数组,如 {'h', 'e', 'l', 'l', 'o',。 . . }
-
@MarkRansom 啊...我不知道这是必需的。谢谢!
-
您正在将所有文件读入字符串为什么不将字符串转换为数组而不是再次读取?