PDA

View Full Version : کمک در فایل های دودویی(باینری)



amir-yeketaz
چهارشنبه 09 دی 1388, 19:42 عصر
سلام خدمت بروبچ برنامه نویس
در نظر میگیریم یه فایلی با پسوند bin. ایجاد میکنیم و به صورت fwrite یا fread باهاش کار میکنیم و فایلشم ایجاد میکنیم
حالا سوال من اینه که چطور میشه اون چیزی که ما میخوایم تو فایل مثه printf انجام بشه
چون اینجوری یه علامت های عجیبی میده
من notpad++ دانلود کردم ولی بازم جواب نداد ولی وقتی با پسوند html. ذخیره میکنم جواب میده
یعنی یه چیزایی نشون میده ولی نه به اون صورتی که ما میخوایم
حالا باید چیکار کنم که بفهمم تو فایل دارم چیکار میکنم
خیلی ممنون میشم اگه زودتر جوابمو بدین:بوس::بوس::بوس:

qwerty11
چهارشنبه 09 دی 1388, 19:54 عصر
خوب اگه با فایل های باینری آشنایی داشته باشین میدونین که این کار امکان پذیر نیست.

amir-yeketaz
چهارشنبه 09 دی 1388, 21:04 عصر
خوب پس چه به دردی میخوره اگه اینکارو نشه کرد؟؟!!!!

amir-yeketaz
پنج شنبه 10 دی 1388, 11:02 صبح
خوب اگه من بخوام یه فایل باینری رو بخونم یعنی fread کنم چجوری میتونم تو اون مثلا یه عددی قرار بدم چون اینکارو کردم حتی با text ولی نمیخونه
بابا عجب چیز بیخودیه این فایل باینری:گریه::گریه::گریه::عصب نی++::عصبانی++:
خواهشا کمک کنین!!!!!!!!!

qwerty11
پنج شنبه 10 دی 1388, 11:31 صبح
کمک !؟ کمک لازم نیست که، گفتم که نمیشه !
فایل باینری هم چیز بیخودی نیست اونقدر ! فقط باید با fwrite بنویسی و با fread هم بخونی. اینکه بیای دستی توش text بنویسی و بعدش بخوای با fread یا fscanf بخونی امکان پذیر نیست.

amir-yeketaz
پنج شنبه 10 دی 1388, 23:59 عصر
کمک !؟ کمک لازم نیست که، گفتم که نمیشه !
فایل باینری هم چیز بیخودی نیست اونقدر ! فقط باید با fwrite بنویسی و با fread هم بخونی. اینکه بیای دستی توش text بنویسی و بعدش بخوای با fread یا fscanf بخونی امکان پذیر نیست.
آخه استاد ما یه پروژه فروشگاه داده که کالا و مشتری فاکتور فروش و...اینا توشه
بعد گفته که باید با فایل باینری اطلاعاتو بخونه (fread کنه) بعدشم بیاد فاکتورو fwrite کنه(البته خیلی پیچیده تر از اینا..!!!)
خوب اگه من بخوام ببینم که برنامم داره درست کار میکنه چطوری بفهمم آخه
واقعا به نظر من فایل باینری بیخوده
میشه بگین این فایل باینری چه فایده ای داره (در ضمن اون سوال بالایی هم رو جواب بدین خواهشا)
ممنون

amir-yeketaz
شنبه 12 دی 1388, 14:20 عصر
آخه استاد ما یه پروژه فروشگاه داده که کالا و مشتری فاکتور فروش و...اینا توشه
بعد گفته که باید با فایل باینری اطلاعاتو بخونه (fread کنه) بعدشم بیاد فاکتورو fwrite کنه(البته خیلی پیچیده تر از اینا..!!!)
خوب اگه من بخوام ببینم که برنامم داره درست کار میکنه چطوری بفهمم آخه
واقعا به نظر من فایل باینری بیخوده
میشه بگین این فایل باینری چه فایده ای داره (در ضمن اون سوال بالایی هم رو جواب بدین خواهشا)
ممنون
بابا خواهشا جواب بدین برام خیلی مهمه(توضیح کامل بدین)

amir-yeketaz
دوشنبه 14 دی 1388, 08:56 صبح
:عصبانی++::عصبانی++::عصبانی++:: صبانی++::عصبانی++:

negarsoft
دوشنبه 14 دی 1388, 11:53 صبح
سلام
حالا حتما باید با fread باشه اگر نه که با ifstream راحت تره این طوری استفاده می شه:

ifstream file ("filename.bin" , ios::binary)

mortezamsp
دوشنبه 14 دی 1388, 12:08 عصر
با سلام . آيا اين به شما كمكي ميكند ؟

amir-yeketaz
دوشنبه 14 دی 1388, 14:31 عصر
یه سری از نرم افزرا هست که فایل های باینری رو میخونه آیا اینا به درد نمی خوره
مثه hex editor
اگه بهتر میشناسین لطف میکنین اگه بگین

ahoo_k
جمعه 09 بهمن 1388, 22:09 عصر
سلام
من انجام دادم نشد
بازم برنامه فیلها رو به صورت متنی ذخیره میکنه

amin1softco
شنبه 10 بهمن 1388, 11:29 صبح
سلام
چرا بیراه دارید حرکت می کنید خوب وقتی که شما یک مقدار رو با نوع خاصی به صورت باینری ذخیره می کنید می تونید با یک برنامه دیگه ایی هم اون رو بخونید یعنی فرض کنید داریم :
با این کد بنویسیم



#include <stdio.h>
int main(void)
{
FILE *stream;
int i=23423;
if ((stream = fopen("TEST.$$$", "wb")) == NULL) /* open file TEST.$$$ */
{
fprintf(stderr, "Cannot open output file.\n");
return 1;
}

fwrite(&i, sizeof(int), 1, stream);
fclose(stream); /* close file */
return 0;
}



درست می تونیم باداشتن ترتیب نوشتن قبلی دوباره بخونیم مهم سایز و ترتیب خوندنه مثلا یک متغیر از نوع چار از اول فایل 10 تا متغیر جلو تر با نوع مثلا char[10] تعریف شده می شه خوند برای بردن جلوترم که از fseek استفاده می کنیم و نکته : فقط از نوع char* استفاده نکنید چون دیگه مشکل ایجاد می شه در هنگام خواندنش
مثال خواندن کد بالا:



#include <stdio.h>
#include <conio.h>;
int main(void)
{
clrscr();
FILE *stream;
int i=0;
if ((stream = fopen("TEST.$$$", "rb")) == NULL) /* open file TEST.$$$ */
{
fprintf(stderr, "Cannot open output file.\n");
return 1;
}
fread(&i, sizeof(int), 1, stream);
printf("%d\n", i);
fclose(stream); /* close file */
getch();
return 0;
}


یا اینکه از یک هکس ادیتور استفاده کنید که مقدار نوشته شده رو به شما نشون بده
مثل:
Hex Workshop Hex Editor

http://up.iranblog.com/7/1264863789.jpg


که اون پایین مقدار را نشون می ده:لبخندساده: