Tam Sürümünü Görmek İçin : Dosya yazma ve okuma
PlayG7SeveN
24/04/2007, 14:22
arkadaşlar start.png diye bir resim var... Bunu ben media.dat dosyasının içine yazmak istiyorum.... ve istedğim zaman media.dat dosyası ile bu resmi kullanmam gerekiyor... bu yönetemi nasıl yapabiliriz..Aşağıdakikod denedim ancak media.dat dosyasının içine hiç bişey yazmıyor..(amaç bu resim veya bazı benzer dosyaları saklamak)
#include <fstream>
#include <iostream>
using namespace std;
int main()
{
const int max =100;
char buffer[max];
ifstream infile("start.png");
while(!infile.eof())
{
infile.getline(buffer,max);
ofstream outfile("media.dat");
outfile<<buffer;
}
return 0;
}
acehreli
24/04/2007, 19:35
outfile'i while dOngUsunde her dOnuste tekrar tekrar aciyor ve kapatiyorsun. Orada outfile otomatik bir nesne oldugu icin kendi yasami while'in sonundaki } karakterinde son buluyor. Okudugun 100'er baytlik bilgiyi tekrar tekrar ayni dosyanin uzerine yaziyorsun.
outfile'in tanimini while'dan onceye tasiman gerekiyor.
Bu arada, eger amacin bir dosyadan alip baska dosyaya yazmaksa; bu isin iostream_buffer'lari kullanan daha hizli yollari da var:
#include <fstream>
#include <iostream>
using namespace std;
/*
* Bu islevlerde hata denetimi gerekiyor!
*/
void birinci_yontem()
{
ifstream giris("deneme.txt");
ofstream cikis("deneme_kopyasi_1.txt");
cikis << giris.rdbuf();
}
void ikinci_yontem()
{
ifstream giris("deneme.txt");
ofstream cikis("deneme_kopyasi_2.txt");
copy(istreambuf_iterator<char>(giris),
istreambuf_iterator<char>(),
ostreambuf_iterator<char>(cikis));
}
int main()
{
birinci_yontem();
ikinci_yontem();
}
Surada da ayni yontemi bir dosyayi bir string'e atmakta kullanmistim:
http://forum.ceviz.net/convert-std-string-atl-ccombstr-t42286.html
Ali
fscanf ve fprintf kullanılamaz mı?
acehreli
25/04/2007, 05:30
Kullanilabilir. :)
Ali
PlayG7SeveN
25/04/2007, 14:23
#include <fstream>
#include <iostream>
using namespace std;
void birinci_yontem()
{
ifstream giris("start.png");
ofstream cikis("deneme.txt");
cikis << giris.rdbuf();
}
int main()
{
birinci_yontem();
}
Deleting intermediate files and output files for project 'sa - Win32 Debug'.
--------------------Configuration: sa - Win32 Debug--------------------
Compiling...
saa.cpp
i:\program files\microsoft visual studio\myprojects\sa\saa.cpp(23) : warning C4508: 'main' : function should return a value; 'void' return type assumed
Linking...
sa.exe - 0 error(s), 1 warning(s)
PlayG7SeveN
25/04/2007, 14:24
return 0; yaptım düzeldi
PlayG7SeveN
25/04/2007, 14:28
işeyaramadı kardeş 2 side start.png dosyasını deneme.txt dosyasının içine yazdım ...yazdığı şey şu sadece
‰PNG
PlayG7SeveN
25/04/2007, 15:20
abi olayı anladım.... bir deneme.txt dosyası hazırladım ilk satıra birkaç bişey yazdım... 2. satıra ve 3. satıra birşeyler yazdım...
daha sonra bu deneme.txt dosyasını media.txt aktar dedim.. ilk satırı kayıt ediyor ama 2. ve 3. satırları kopyalamıyor senin örnekte()...
----------------------------------------------------------
#include <fstream>
#include <iostream>
using namespace std;
int main()
{
const int max =99999;
char buffer[max];
ifstream infile("sa.txt");
while(!infile.eof())
{
infile.getline(buffer,max);
cout<<buffer<<endl;
system("PAUSE");
}
return 0;
}
bunu denedim burdaki sonuçtakiii gibi satırları sıra ile yapıyor ama yazmayı başaramadım...giriş çıkışları pek bilmdiğim... ilk yazdığımdakii örnekte seninde dediğin gibi sürekli dosya oluşturyor ve yazıyor...bunu dosya yaratmadan bir dosayaya yazması nasıl yappılabilir acaba?
acehreli
25/04/2007, 16:19
main'e 'return 0' eklemeyi gerektirdigine bakilirsa cok eski ve belki de bozuk bir derleyici kullaniyorsun. Acaba diger sorunlarinin da bununla mi ilgisi var.
Son sordugun sorunun yaniti ilk yazdigim mektupta vardi: "outfile'in tanimini while'dan onceye tasiman gerekiyor."
Ali
PlayG7SeveN
25/04/2007, 16:30
evet şuan çok eski bir derleyici kullanıyorum... vc6 :D
vc8 bulayım ben eniyisi.....zaten mysql++ kütüphanesi kurmaya çalıştım oda hata veriyor sanırım derleyiciden...
eğer senin yazdığın örnekler..sende tamamile çalışıyorsa...benim derleyici eski oldğundan yapamıyor demektir... :D
PlayG7SeveN
25/04/2007, 16:30
sen hangi derleyici kullanıyorsun acaba söyleyebilirmisin
acehreli
25/04/2007, 16:38
gcc ile daha onceden de denemistim; ama sana yazdiklarim VC++'in yeni surumleriyle de calistilar. (2007? 2005? bakmam lazim... :) )
Ali
PlayG7SeveN
25/04/2007, 16:49
2005 dir.... yani vc8
bu arada code::bloack ile de denedim olmadı...
Hayrına şu yolladığım bi start.png dosyasını media.dat içine yazabilirmisin...
PlayG7SeveN
25/04/2007, 17:32
2. MinGWStudioFullSetup-2.05.exe (http://www.simtel.net/product.php[id]74843[sekid]0[SiteID]simtel.net) (26,633,338)
Files in packkage No. 1.
MinGW Developer Studio files
MinGW(C/C++ only) Compiler 3.4.2
Binutils 2.15.94
Windows32 API 3.2
MinGW Runtime Lirbraries 3.7
GNU Debugger(GDB) 6.0
GNU Make 3.80.0-3
Windows API Reference Manualhttp://dotpups.de/dotpups/Programming/MinGWStudio.jpg
bunu indiriyorum hadi hayırlısı
acehreli
25/04/2007, 18:57
Simdi aklima geldi: acaba dosyalari 'binary' olarak acmadigin icin mi sorun yasiyorsun? Acarken ios::bin ile acmayi da dener misin:
ifstream giris("giris.txt", ios::bin | ios::in);
ofstream cikis("cikis.txt", ios::bin | ios::out);
Ali
PlayG7SeveN
25/04/2007, 19:38
ahahahahaha :D
saol acehreli valla oldu
#include <fstream>
#include <iostream>
using namespace std;
void birinci_yontem()
{
ifstream giris("start.png", ios::binary);
ofstream cikis("cikis.png", ios::binary);
cikis << giris.rdbuf();
}
int main()
{
birinci_yontem();
return 0;
}
png dosyasini baska bir isimle yaptim calisti... saol .tskürler
Forum Yazılımı : vBulletin v3.6.8, Copyright ©2000-2008, Jelsoft Enterprises Ltd.