PDA

View Full Version : ویرایش فایل



amir_civil
یک شنبه 01 مهر 1386, 19:31 عصر
سلام دوستان
ببینید مایک فایل داریم که وقتی اجرا میشه عدد 2 رو نشون میده حلا من میخام بدونم چه جوری با برنامه نویسی میشه این عدد رو به 4 تغیر داد و وقتی اون فایل اجرا شد عدد4 رو نشون بده
ممنون

emad_67
یک شنبه 01 مهر 1386, 19:49 عصر
فایلت متنی هست؟
اگه این طور هست میشه اشاره گر های فایل رو به مکان اون کاراکتر منتقل و جای اون کاراکتر رو با 4 عوض کرد

amir_civil
یک شنبه 01 مهر 1386, 20:57 عصر
سلام
باینری هست
من با هر دستوری امتحان میکنم یا فایل از بین میره یا به اخر فایل متن نویشته میشه

emad_67
یک شنبه 01 مهر 1386, 21:44 عصر
من یه مثال میزارم شاید به کارت بیاد


#include<iostream.h>
#include<fstream.h>
void main()
{
fstream inout("name.txt",ios::in | ios::out | ios::binary);
inout.seekp(2);
inout<<"S";
}

یه فایل به نام name.txt باز کن و توش یه چیزی بنویس بعد برنامه رو اجرا کن. بعد که فایل رو باز کنی باید کاراکتر سوم با حرف "S" جابجا شده. از همین روش میتونی برای جابجا کردن اون کاراکتری که میخوای عمل کنی البته تو این مثال من فرض رو بر این گرفتم که جای کاراکتر رو میدونیم ولی اگه هم نمیدونی میشه پیداش کنی و بعد جایگزین کنی
اگه مشکلی بود برنامه ای که نوشتی رو بزار (البته اگه خیلی زیاد نیست) شاید بشه بهتر توضیح داد

amir_civil
یک شنبه 01 مهر 1386, 22:12 عصر
ممنون
منم همین برنامه رو مینوشتم به این شکل:

#include<iostream>
#include<fstream>
using namespace std;
void main()
{
fstream inout("name.txt", ios::out | ios::binary);
inout.seekp(2);
inout<<"S";
}
مگه ios::in برای خواندن نیست؟
پس چرا برای نوشتم ازش استفاده کردید )please explain)
به این ترتیب با این برنامه درست کار میکنه
مسله بدی نحوه بدست اوردن ادرس و جامپ کردن به اون هست
که فکر کنم با دستو jmp حل بشه؟

emad_67
یک شنبه 01 مهر 1386, 23:11 عصر
مگه ios::in برای خواندن نیست؟

درسته ، ios::in برای خوندن فایل هست ولی وقتی که شما به تنهایی مینوسید ios::out برنامه یه فایل در خروجی باز میکنه حتی اگه فایلی به همون نام وجود داشته باشه یه فایل مجددا روی اون جایگزین میشه و فایل جدید اصلا کاراکتری در اون وجود نداره و فقط کاراکتر مورد نظر شما روی اون بایتی که میخواین نوشته میشه ولی وقتی فایل رو به صورت ورودی - خروجی باز میکنید اگه فایل قبلا وجود داشته باشه که در برنامه باز میشه وگرنه یه فایل ساخته میشه . امید وارم منظورم رو درست رسونده باشم


مسله بدی نحوه بدست اوردن ادرس و جامپ کردن به اون هست
که فکر کنم با دستو jmp حل بشه؟

در این مورد اطلاعی ندارم