الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيفية عمل أرشيف Dat في لغة السي ؟؟؟؟؟؟

بدأه josen في 13 مارس 2009 · 2 رد · 410 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

سلام للجميع

لا أدري لماذا تقوم الإدارة دائما بحذف المواضيع أو بالأحرى الأسئلة التي أضعها مع أنها دوما

تتضمن كود ، و تتركز حول نقاط مهمة في البرمجة بلغة السي

كما أنني دوما أطرح السؤال بعد البحث عن مواضيع مشابهة في المنتدى و عدم ايجاد اي شيء مفيد حول القضية

المهم ، سؤالي هذه المرة ، حول كيفية عمل أرشيف أجندة أو ما شابه بالإمتداد

sales.dat

من الممكن أن يكون أرشيف لحفظ معلومات للمبيعات لشركة ما حيث

نخزن معلومات الزبون (كود، اسم، عنوان، تلفون) و معلومات المبيعات مثل(المنتوجات التي باعها، التاريخ، الكمية ، السعر) و ما الى ذلك

الكود المقترح يتكون من تعريف بنية في البداية قبل الماين

main

و يستمر على الشكل التالي

struct customer_str

{

char cus_cod[9];

char cus_name[31];

char cus_dir[16];

char cus_tfn[11];

char cus_artic[16];

char cus_unidad[5];

char cus_price[8];

}reg;

FILE *pf;

pf=fopen("sales.dat","w");

fread(®, sizeof( struct customer_str) ,1,pf);

.............

.............

طبعا فيما بعد سنطلب من المستخدم ادخال البيانات و نقوم بحفظها بواسطة التعليمة

fwrite(®, sizeof( struct customer_str) ,1,pf);

المهم من كل هذا انني اريد أن يكون الشكل النهائي للملف

sales.dat

و الذي بإمكاننا معاينته بالبرنامج

notepad.exe

كالتالي

cod001 name01 dir001 tfn001 art001 uni001 prc001

cod002 name02 dir002 tfn002 art002 uni002 prc002

cod003 name03 dir003 tfn003 art003 uni003 prc003

cod004 name04 dir004 tfn004 art004 uni004 prc004

cod005 name05 dir005 tfn005 art005 uni005 prc005

cod006 name06 dir006 tfn006 art006 uni006 prc006

cod007 name07 dir007 tfn007 art007 uni007 prc007

........... ............ ............ ............ ............

........... ............ ............ ............ ............

........... ............ ............ ............ ............

........... ............ ............ ............ ............

........... ............ ............ ............ ............

........... ............ ............ ............ ............

........... ............ ............ ............ ............

........... ............ ............ ............ ............

........... ............ ............ ............ ............

........... ............ ............ ............ ............

........... ............ ............ ............ ............

cod021 name21 dir021 tfn021 art021 uni021 prc021

اذا السؤال هو ، ما هو الكود الذي يمكنني من عمل ارشيفات على هذا الشكل ؟؟ أو هل يوجد برنامج مخصص لعمل تلك الأرشيفات ؟؟ فأنا مستعد لأشتريه

شكرا للجميع

تحياتي

#2

هذالكود سوف يساعدك ان شاء الله.

#include <stdio.h>

struct customer_str
{
char cus_cod[9];
char cus_name[31];
char cus_price[8];
}reg[3];

int main(int argc, char *argv[])
{
FILE *pf;
int i;
pf=fopen("sales.dat","w"); 
for(i=0;i<3;i++)
{
printf("%s","Enter customer code :");
scanf("%s",®.cus_cod);

printf("%s","Enter customer name :");
scanf("%s",®.cus_name);

printf("%s","Enter customer price :");
scanf("%s",®.cus_price);
}

for(i=0;i<3;i++)
{
fprintf(pf,"%*.*s %*.*s %*.*s\n",9,9,reg.cus_cod,31,31,reg.cus_name,8,8,reg.cus_price);				
}
fclose(pf);
  return 0;
}
tvquran_6.gif

#3

جزيل الشكر لك أخ فهد

قمت بالتعديل لأتمكن من سؤال المستخدم ، كم زبون يريد أن يسجل

المهم ، أن عملية استشارة الملف ، لا تعطي نتائج جيدة

أرفق لك الكود الذي استعملته من أجل طباعة كافة محتويات الملف ، و النتيجة هي أن شاشة الإظهار لا تعطي نتائج محمودة أبدا

ما هو الحل ؟؟ لأتمكن من استشارة الملف و القيام بالعمليات المطلوبة : مثلا الزبون الذي يملك أكبر سعر أو مجموع أسعار زبون ما ... استشارة الملف و طباعة النتيجة بشكل جيد هي المهمة و ليس الباقي

شكرا مرة أخرى



#include <stdio.h>

struct customer_str
{
char cus_cod[6];
char cus_name[7];
char cus_price[4];
}reg;

main()
{
FILE *pf;
if((pf=fopen("sales.dat","r"))==NULL)
{
printf("You can not open the file :sales.dat");
getch();
exit(0);
}

fread(®, sizeof( struct customer_str),1,pf);
while (!feof(pf))
{
printf("%s %s %s\n",reg.cus_cod,reg.cus_name,reg.cus_price);
fread(®, sizeof( struct customer_str),1,pf);
}
fclose(pf);
getch();
return(0);
}



و النتيجة المحزنة هي كالتالي

CONSOLE

cod01 d01

name01 3455

1 3455

455

cod002 002

name02 8779

2 8779

779

cod03 d03

name03 988

3 988

988

تم تعديل هذه المشاركة بواسطة josen في 14 مارس 2009 في 00:00

مواضيع مشابهة