#akış
Arkadaşlar elimdeki bir text dosyasındaki seçtiğim verileri başka bir text dosyasına yazdırmak istiyorum. Bunu için şöyle bir kod yazdım:

//text dosyasından istenilen verilerin alınması
//x satır sayısı
//y sütun sayısı
#include
#include
#include
#include
using namespace std;

int main(){
int x=4;
int y=64;
string mystring;
char array[y]={};
ifstream myinfile("input.txt");
ofstream myoutfile("output.txt");

if(myinfile.is_open()){
if(myoutfile.is_open()){

for(int i=0; i<x; i++){
getline(myinfile, mystring);
strcpy(array, mystring.c_str());

myoutfile<<array[4]; //aslında 5. eleman
myoutfile<<array[9];
myoutfile<<array[14];
myoutfile<<array[19];
myoutfile<<array[24];
myoutfile<<array[29];
myoutfile<<array[34];
myoutfile<<array[39];
myoutfile<<array[44];
myoutfile<<array[49]<<endl;
}
myinfile.close();
myoutfile.close();
}
else cout<<"unable the open output file";
}
else cout<<"unable the open input file";

return 0;
}

Yukarıdaki kod sütun sayısı fazla olan dosyalarda çalışmıyor. Windows programı kapatıyor. Ama kısa olanlarda çalışıyor(ekran görüntüsünü ekledim).
benim düzenlemem gereken dosyada sütun sayısı 64, satır sayısı 10 milyon civarı, dosyada sadece 1 ve 0 lar var.
Hata neden oluyor olabilir? string in boyutu çok büyük değil.

BeğenFavori PaylaşYorum yap
  • DURSUN @dursun

    kodu kopyala yapıştır yapınca düzgün olmadı. Rahat okumak için ekran görüntüsü

  • Cem KOÇ @cemkoc

    Takildigin limit string değil int x gibi duruyor.

  • DURSUN @dursun

    //text dosyasından istenilen verilerin alınması
    //x satır sayısı
    //y sütun sayısı
    #include
    #include
    #include
    #include
    using namespace std;

    int main(){
    long int x=10024000;
    int y=65;
    string mystring;
    char array[y]={};
    ifstream myinfile("input.txt");
    ofstream myoutfile("output.txt");

    if(myinfile.is_open()){
    if(myoutfile.is_open()){

    for(int i=0; i<x; i++){
    getline(myinfile, mystring);
    strcpy(array, mystring.c_str());

    myoutfile<<array[4]; //aslında 5. eleman
    myoutfile<<array[9];
    myoutfile<<array[14];
    myoutfile<<array[19];
    myoutfile<<array[24];
    myoutfile<<array[29];
    myoutfile<<array[34];
    myoutfile<<array[39];
    myoutfile<<array[44];
    myoutfile<<array[49]<<endl;
    }
    myinfile.close();
    myoutfile.close();
    }
    else cout<<"unable the open output file";
    }
    else cout<<"unable the open input file";

    return 0;
    }

    son hali bu. Belki birini işine yarar.

  • Papa Emeritus @pope

    Overflow gibi gözüküyor hocam . Int girmişsiniz fakat bahsettiğiniz boyuta 16bit yetmez . Long Long Int kullanın derim . Overflow olup olmadığını mümkün olduğunca kontrol edin , 3-4 satır fazladan kod yazarsınız fakat daha kaliteli bir kod olur .

  • Ömer Özgür @omc43

    Kendi Text editörünü yaz en iyisi. 😀