PDA

View Full Version : چطوری میشه روی یک فایل خط به خط جلو رفت؟



combo_ci
سه شنبه 16 بهمن 1386, 19:12 عصر
سلام
من میخواستم یه برنامه بنویسم که مثلا توی برنامه 5 خط از یک فایل txt رو برم پایین و اونجا یه مطلب بنویسم

این برنامه رو نوشتم
#include <iostream.h>
#include <fstream.h>
#include <stdlib.h>

void main()
{

ofstream out("test.txt");

if(!out)
{
cout << "Cannot open file";
return;
}

out.seekp(2,ios::beg);
out.put('X');
out.close();
}

از تابع seek استفاده کردم اما تابع seek کاراکتر به کارکتر میره جلو....کسی میدونه چطوری میشه مثلا رفت به خط 5 از یه فایل txt?

amir_civil
سه شنبه 16 بهمن 1386, 19:57 عصر
\n or endl

combo_ci
سه شنبه 16 بهمن 1386, 20:03 عصر
\n or endl

خوب این یعنی چی دوست عزیز...بیبینید من میخوام وقتی فایل رو باز کردم (وقتی فایل دارای اطلاعات هست) به خط پنجم فایل برم !

amir_civil
سه شنبه 16 بهمن 1386, 21:21 عصر
سلام
شما با دستور زیر میتونید به خط بعد بروید


ofstream file;
file<<endl;

Nima_NF
چهارشنبه 17 بهمن 1386, 03:02 صبح
سلام
شما با دستور زیر میتونید به خط بعد بروید


ofstream file;
file<<endl;

تکرار 5 مرتبه مورد فوق ، 5 خط خالی در فایل شما ایجاد می کند و سپس اطلاعات شما را می نویسد.
اگر شما می خواهید در فایل txt کنونی که حاوی اطلاعات می باشد به خط 5 آن بروید و چیزی بنویسید می توانید به این شکل بروید:
برای اینکه متوجه شوید کجا انتهای خط می باشد ، باید تک به تک کارکتر ها را بخوانید و تست کنید که آیا کارکتر انتهای خط می باشد یا خیر و هر مرتبه که پیدا شد با یک عدد به یک شمارنده اضافه کنید و موقعیت را نیز از طریق tellp و tellg می توانید بدست آورید: (البته بر روی محتویات قبلی)



fstream file( TEXT("test.txt");


while (counter < 5)
{
file.get(y);

if (y == '\n')
counter++;
}


در هر حال برای اینکه به درستی در فایل هایی که قبلا حاوی اطلاعات هست ، چیزی در میان آن اضافه کنید ، کار درست کپی کردن تمام رشته در یک بافر (رشته به اندازه فایل) و سپس ایجاد تغییرات توسط توابع استاندارد C می باشد و سپس کپی کردن تمامی آن به فایل مورد نظر.