我有成百上千的.txt文件按數字排序:1.txt,2.txt,3.txt,... n.txt。在每個文件中有兩列有十進制數字。 我寫了一個算法,它只對一個.txt文件進行一些操作,現在我想遞歸地對它們進行相同的操作。 This helpful question給了我一些我想要做的事情。 現在我想要寫一個算法來讀取所有文件:C++ - 順序打開文本文件
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
int i, n;
char filename[6];
double column1[100], column2[100];
for (n=1;n=200;n++)
{
sprintf(filename, "%d.txt", n);
ifstream datafile;
datafile.open(filename);
for (i=0;i<100;i++)
{
datafile >> column1[i] >> column2[i];
cout << column1[i] << column2[i];
}
datafile.close();
}
return 0;
}
我覺得代碼是這樣做的:它是從的1.txt直到200.txt創建的字符串名稱,然後將它打開文件與這些名字。對於每個文件,前100列將與數組column1和column2相關聯,然後這些值將顯示在屏幕上。 編譯它時我沒有收到任何錯誤,但是當我運行它時,輸出是巨大的,並且不會停止。如果我將輸出設置爲一個.txt文件,它很容易達到一些Gb! 我也嘗試減少循環數和減少列數(3左右),但我直到得到無限的輸出。我會很高興,如果有人可以指出我在代碼中所犯的錯誤... 我在Linux上使用gcc 5.2.1。 謝謝!
TL; DR。但是對於(n = 1; n = 200; n ++)'用GCC產生一個警告,我的第一個猜測就是你的意思是'n <200'。故事的道德:編寫完整的警告級別,並且在100%無警告之前不要考慮程序是否正確。 –
不僅如此,爲什麼你的'filename'數組很小?試圖微觀管理這個陣列的規模有多大,你會冒着內存覆蓋的風險。使它成爲'文件名[25]'並完成它。 – PaulMcKenzie
@ChristianHackl:如果他們曾經在那裏,我就讀不出任何警告。無論如何感謝您指出錯誤。 PaulMcKenzie:我認爲長度爲8(不是6)就足夠了,因爲我有最多7個符號的文件名。謝謝你的建議! – porfavorinho