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

قراءة بيانات من ملف في الـ C

بدأه Anas Belheraoui في 29 سبتمبر 2011 · 8 رد · 579 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

كالعادة، لدي مشكلة!

اللغة المستخدمة: C

البرنامج المستخدم: Turbo C++ IDE

المشكلة هي في الكود التالي:

#include <stdio.h>
#include <conio.h>

struct record
	{
		int i;
		char ch;
	};

void main (void)
	{
		record rec;
		FILE *record;
		clrscr();
		record=fopen("c:\\Try1.txt","a");

		if(record == NULL)
			{
				clrscr();
				printf("Error");
				getch();
			}
		else
			{
				printf("Enter Integer= ");
				scanf("%i",&rec.i);
				fflush(stdin);

				printf("\nEnter Characters= ");
				scanf("%c",&rec.ch);
				fflush(stdin);

				clrscr();

				printf("Integer= %i", rec.i);
				printf("\nCharacters= %c", rec.ch);

				printf("\nPress any key to save record...");
				getch();
				fwrite(&rec,sizeof rec,1,record);
			}
		fclose(record);
	}

المشكلة هي كالتالي:

عندما أكتب في الـ ch مثلاً: Ahmad ، ثم أستخدم printf لقراءة المحتوى في الـ ch لا يقرأ الكلمة، بل يقرأ حرف منها أو يحولها إلى رموز، ونفس الطريقة في الـ i ، إن كتبت أكثر من رقم يقرأ رقم أو رقمين فقط، فأين المشكلة؟!

أشكركم

#2

استخدم بدل

%c

قم بوضع

%s
2
#3
W.A.R.D كتب:

استخدم بدل

%c

قم بوضع

%s

لا زالت نفس المشكلة!

#4

اتوقع اني وجدت الحل

انت معرفch على انها متغير حرفي char ch

حولها الى مصفوفة [255]char ch

طبعا مع التعديل في الرد السابق

1
#5
W.A.R.D كتب:

اتوقع اني وجدت الحل

انت معرفch على انها متغير حرفي char ch

حولها الى مصفوفة [255]char ch

طبعا مع التعديل في الرد السابق

شكراً لك، جزء من المشكلة حُلت، لكن إن كتبت أكثر من كلمة لا يظهر الكلمة الثانية "يقرأ إلى أن يجد مسافة ويتوقف" فما حلها؟

وأيضاً الأرقام، كيف يمكنني حل مشكلتها؟

أشكركم..

#6
W.A.R.D كتب:

استخدم بدل

%c

قم بوضع

%s

وأيضاً ما الفرق بين %c و %s ؟

ولماذا الـ %c يعمل جيداً بدون الـ structure فلماذا لم يعمل مع الـ structure؟

هل بدون الـ structure أستخدم %c و مع الـ structure أستخدم %s؟

أشكركم..

#7

استخدم بدل scanf الدالة

gets(rec.i)
gets(rec.ch)

الفرق بين %c و %s

هو ان %s تستخدم للنصوص مثلا ward

اما %c تستخدم للحروف مثلا w

تم تعديل هذه المشاركة بواسطة W.A.R.D في 30 سبتمبر 2011 في 21:23

1
#8
W.A.R.D كتب:

استخدم بدل scanf الدالة

gets(rec.i)
gets(rec.ch)

الفرق بين %c و %s

هو ان %s تستخدم للنصوص مثلا ward

اما %c تستخدم للحروف مثلا w

بارك ربي فيك، الدالة gets عملت مع الـ char ، لكنها لم تعمل مع الـ int ، فما المشكلة؟

أشكرك على التوضيح..

#9
Anas Belheraoui كتب:

بارك ربي فيك، الدالة gets عملت مع الـ char ، لكنها لم تعمل مع الـ int ، فما المشكلة؟

أشكرك على التوضيح..

مزبوط الدالة gets فقط للنصوص

لل int استعمل

scanf("%d",int)
1

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