C++'ta dosyalama programı yaparken hata

Sydatolo

Decapat
Katılım
30 Nisan 2021
Mesajlar
210
Makaleler
1
Daha fazla  
Cinsiyet
Erkek
Meslek
Öğrenci
[CODE lang="cpp" title="C++:" highlight="1-18"]#include<iostream>
#include<conio.h>
#include<windows.h>
#include<fstream>
#define renk system("color a");
int main(){
renk
while(1){
for(int i=0;i<2193817236812293;i++){
char a;
a=getchar();
std::cout<<a;
ofstream dosya01("kayit.txt");
dosya01<<a;
}
}
return 0;
}[/CODE]

Bu C++ kodunda:

main.cpp: In function 'int main()': main.cpp:13:13: error: 'ofstream' was not declared in this scope ofstream dosya01[i]("keyloggerkayit.txt"); ^~~~~~~~ main.cpp:13:13: note: suggested alternative: In file included from c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\ios:38:0, from c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\ostream:38, from c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\iostream:39, from main.cpp:1: c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\iosfwd:165:34: note: 'std::ofstream' typedef basic_ofstream<char> ofstream; ^~~~~~~~ main.cpp:14:13: error: 'dosya01' was not declared in this scope dosya01[i]<<a[i]; ^~~~~~~

Bu hatayı veriyor.
Hatamı anlamadım, yardım olabilecek birisi var mı?
 
Son düzenleyen: Moderatör:
Ben de kodu anlamadım.
Renk kim? 7. satırda neler oluyor? ofstream kim? Niye dosya01 isimli bir array varmış gibi davranıyorsunuz? O sayı ne? Neden while döngüsü içinde bir de for döngüsü var? Programın nasıl sonlanmasını bekliyorsunuz? 10. satırda dizi tanımladığınızı mı sanıyorsunuz?
 
'dosya01' was not declared in this scope

Diyor ki; "dosya01" bu scope içerisinde tanımlı değil.

Ki dediği gibi değil. Ofstream o şekilde kullanıldığını sanmıyorum.
Gördüğüm tüm örneklerde;
C++:
ofstream outfile;
outfile.open("kayit.txt");
şeklinde.
 
Ben de kodu anlamadım.
Renk kim? 7. satırda neler oluyor? Ofstream kim? Niye dosya01 isimli bir array varmış gibi davranıyorsunuz? O sayı ne? Neden while döngüsü içinde bir de for döngüsü var? Programın nasıl sonlanmasını bekliyorsunuz? 10. satırda dizi tanımladığınızı mı sanıyorsunuz?

Renk: Define ile tanımladığım Windows'ta renk değiştire bir komut
#define renk system("color a");
Eğer burada gördüyseniz.
2- İnternett earaştırdığımda yusufsezer adlı bir siteden görmüştüm.
3- For döngüsünün bitmesi için tanımladığım bir sayı.
4- For döngüsü sürekli dosya oluşturması için i adlı bir değişken oluşturup
Sürekli A1
A2
A3
A4

Diye istedim.

Büyük ihtimal döngü ile dosya oluşturulamıyor diye anladım.
 
Daha önce sana basit projeler için std namespace'ini kullan demiş olmam lazım. İlk hatan o. ofstream diye bir şey yok. std::ofstream var.
7. satırda hala neler döndüğü belli değil.
ofstream array'i oluşturabiliyor olman lazım. Syntax olarak sıkıntı çıkarmıyor en azından ama olayı hala anlamadım.

Sanırım şu işini görür veya başlangıç için yeterli olur.

Kod:
#include <iostream>
#include <fstream>
#include <sstream>
#include <array>
#include <windows.h>

#define RENK    system("color a")
#define N        2

int main() {
    std::array<std::ofstream, N> arr;
    std::stringstream ss;
    std::string str{ "kayit" };
    std::string fileName{ str };
    std::string strEnd{ ".txt" };

    for (auto i{ 0 }; i < N; ++i) {
        fileName = str;
        fileName += std::to_string(i);
        fileName += strEnd;

        arr[i].open(fileName, std::ofstream::out);
        arr[i] << "merhaba: " << i;
    }

    for (auto& i : arr) {
        i.close();
    }

    return 0;
}
 
Daha önce sana basit projeler için std Namespace'ini kullan demiş olmam lazım. İlk hatan o. Ofstream diye bir şey yok. Std:ofstream var.
7. satırda hala neler döndüğü belli değil.
Ofstream Array'i oluşturabiliyor olman lazım. Syntax olarak sıkıntı çıkarmıyor en azından ama olayı hala anlamadım.

Sanırım şu işini görür veya başlangıç için yeterli olur.

Kod:
#include <iostream>
#include <fstream>
#include <sstream>
#include <array>
#include <windows.h>

#define RENK system("color a")
#define N 2

int main() {
 std::array<std::ofstream, N> arr;
 std::stringstream ss;
 std::string str{ "kayit" };
 std::string fileName{ str };
 std::string strEnd{ ".txt" };

 for (auto i{ 0 }; i < N; ++i) {
 fileName = str;
 fileName += std::to_string(i);
 fileName += strEnd;

 arr[i].open(fileName, std::ofstream::out);
 arr[i] << "merhaba: " << i;
 }

 for (auto& i : arr) {
 i.close();
 }

 return 0;
}

Hocam, benim demek istediğim;
getch(); fonksiyonu ile her tuşa bastığında "log.txt" dosyasında getch ile aldığım veriyi yazdırmasını istiyorudum.
Mesela A, B, C, D, D, A, S, da diye 9 tane veri girsem 9 tane dosya oluşturacak ve
log1.txt = a
log2.txt = b
log3.txt = C

Diye gitmesini sağlamak isityordum.
 

Geri
Yukarı