Professional Documents
Culture Documents
البداية في التعامل مع الملفات في لغة السي
البداية في التعامل مع الملفات في لغة السي
AHMED.ALREFAIE@YAHOO.COM
اﻟﺤﯿﺎة ﺑﺮﻣﺠﺔ ﺑﺮﻣﺠﮭﺎ ﺻﺢ ،،،،،،
ﻛﻤﺎ ﺗﻼﺣﻆ " "wوھﺬا ھﻮ إﺳﻢ اﻟﻤﺆﺷﺮ اﻟﺬي ﻋﺮﻓﻨﺎه ﻓﯿﻤﺎ ﺳﺒﻖ .
ﺛﻢ إﺳﻢ اﻟﺪاﻟﺔ ""fopen
وﻗﺪ أرﺳﻠﻨﺎ إﻟﯿﮫﺎ ﻣﺴﺎر اﻟﻤﻠﻒ و إﺳﻤﻪ ""C:\AHMED.TXT
و أرﺳﻠﻨﺎ إﻟﯿﮫﺎ ﻧﻮع اﻟﺘﻌﺎﻣﻞ ﻣﻊ اﻟﻤﻠﻒ و ھﻮ ﻛﺘﺎﺑﺔ ﻓﻲ اﻟﻤﻠﻒ ""wt
ﺑﻌﺪ اﻟﻜﻮد اﻟﺴﺎﺑﻖ ﻧﻜﻮن ﻗﺪ ﻋﺮﻓﻨﺎ ﻟﻠﻤﺆﺷﺮ wاﻟﻤﻠﻒ و اﻧﻨﺎ ﻧﺮﻳﺪ أن ﻧﻜﺘﺐ ﻓﯿﻪ .
اﻷن ﻧﺤﻦ ﺑﺤﺎﺟﺔ ﻟﺪاﻟﺔ ﺗﻜﺘﺐ اﻟﺒﯿﺎﻧﺎت داﺧﻞ اﻟﻤ ﻠﻒ ،ھﻨـﺎك أﻛﺜـﺮ ﻣـﻦ داﻟـﺔ و ﻟﻜـﻦ اﻟﺪاﻟـﺔ
اﻟﺘﻲ ﺗﻌﻠﻤﺘﮫﺎ اﻧﺎ اﻵن ھﻲ داﻟﺔ ﺗﻜﺘﺐ داﺧﻞ اﻟﻤﻠﻒ ﺑﺎﻟﺤﺮف ،ﻛﯿﻒ ﺗﺘﻮﻗﻊ ان ﻳﻜـﻮن ﺷـﻜﻞ
اﻟﺪاﻟﺔ !!! ،اﻟﺪاﻟﺔ ﺗﺄﺧﺬ ﻣﻨﻚ اﻟﺤﺮف اﻟﺬي ﺗﺮﻳﺪ أن ﺗﻜﺘﺒﻪ ﻓـﻲ اﻟﻤﻠـﻒ و ﺗﺄﺧـﺬ ﻣﻨـﻚ ﻣﺆﺷـﺮ
ﻟﻠﻤﻠﻒ و ﺑﺬاﻟﻚ ﻳﻜﻮن ﺷﻜﻠﮫﺎ ﻛﺎﻟﺘﺎﻟﻲ :
;)fputc(set[0],w
إﺳﻢ اﻟﺪاﻟﺔ ""fputc
اﻣﺎ ﻋﻦ ] set[0ﻓﮫﻲ ﻣﺼﻔﻮﻓﺔ ﺣﺮﻓﯿﺔ و ﺑﻤﺄﻧﮫﺎ ) (0ﻓﻨﺤﻦ ﻧﺘﻜﻠﻢ ﻋﻦ اول ﻋﻨﺼﺮ ﻓﯿﮫﺎ
اﻣﺎ ﻋﻦ " "wﻓﮫﻮ اﻟﻤﺆﺷﺮ ﻟﻠﻤﻠﻒ و اﻟﺬي ﺳﺒﻖ أن ﻗﻤﻨﺎ ﺑﺘﻌﺮﻳﻔﻪ ،
ﻣﻤﺘﺎز ﻟﻘﺪ ﻗﻤﻨﺎ ﺑﻜﺘﺎﺑﺔ اﻟﺤﺮف داﺧﻞ اﻟﻤﻠـﻒ اﻵن ﻳﺠـﺐ أن ﻧﻐﻠـﻖ اﻟﻤﻠـﻒ ﻟﻨﺤـﺮر اﻟـﺬاﻛﺮة و
ﻳﻜﻮن ذاﻟﻚ ﺑﺈﺳﺘﺪﻋﺎء اﻟﺪاﻟﺔ
;)fclose(w
ھﺬه اﻟﺪاﻟﺔ ﺗﺄﺧﺬ ﻓﻘﻂ إﺳﻢ اﻟﻤﺆﺷﺮ ﻟﻠﻤﻠﻒ .
أﻋﺘﻘﺪ أن اﻟﻔﻜﺮة ﺑﺪأت ﺗﺼﺒﺢ واﺿﺤﻪ ،ﻓﺄﻧﺖ اﻵن ﻋﺮﻓﺖ أﻧﻪ ﻳﺠﺐ أن ﺗﻌﺮف ﻣﺆﺷـﺮ ﻟﻠﻤﻠـﻒ
اﻟﺬي ﺗﺮﻳﺪ ان ﺗﻜﺘﺐ ﻓﯿﻪ اﻟﺒﯿﺎﻧﺎت ﺛﻢ ﻋﻠﯿﻚ أن ﺗﻔـﺘﺢ اﻟﻤﻠـﻒ ﺛـﻢ ﺗﻜﺘـﺐ اﻟﺒﯿﺎﻧـﺎت ﺛـﻢ ﺗﻐﻠـﻖ
اﻟﻤﻠﻒ .
ھﻞ ﺗﻌﺘﻘﺪ أن ﻗﺮآءة اﻟﺒﯿﺎﻧﺎت ﻣﻦ اﻟﻤﻠﻒ ﺳﻮف ﺗﻜﻮن ﺑﻨﻔﺲ اﻟﺴﮫﻮﻟﺔ ؟؟؟
ﻧﻌﻢ ھﻲ ﻛﺬاﻟﻚ ﻓﺎﻷﻣﺮ ﺑﺴﯿﻂ ﺟﺪاً ﻓﻘﻂ ﺳﻮف ﺗﺴﺘﺨﺪم اﻟﺪاﻟـﺔ fgetcاﻟﺘـﻲ ﺗﻜﺘـﺐ ﻋﻠـﻰ
اﻟﺸﻜﻞ اﻟﺘﺎﻟﻲ
;)C=fgetc(w
اﻟﺤﺮف cھﻮ ﻣﺘﻐﯿﯿﺮ ﺣﺮﻓﻲ charاﻣﺎ اﻟﺤﺮف " "wﻓﮫﻮ ﻧﻔﺲ اﻟﻤﺆﺷﺮ ﻟﻠﻤﻠﻒ .
ﺳﻮف ﺗﺠﺪ اﻟﺤﺮف اﻟﺬي ﻗﺎﻣﺖ اﻟﺪاﻟﺔ ﺑﺈرﺟﺎﻋﻪ داﺧﻞ اﻟﻤﺘﻐﯿﺮ C
و ﻟﻜﻦ اﻟﻤﺸﻜﻠﺔ اﻟﺘﻲ ﻗﺪ ﺗﻌﺮﻗﻠﻚ أﻧـﻚ ﺗﺮﻳـﺪ أن ﺗﻘـﺮأ ﻛـﻞ اﻟﺒﯿﺎﻧـﺎت اﻟﻤﻮﺟـﻮدة ﻓـﻲ اﻟﻤﻠـﻒ
اﻟﻨﺼﻲ و ﻻ ﺗﻌﺮف ﻛﻢ ﺣﺮف ﻳﺤﺘﻮي ﻋﻠﯿﻪ اﻟﻤﻠﻒ اﻟﻨﺼﻲ ﺑﻤﻌﻨﻰ أﻧﻚ ﻛﻢ ﺳﻮف ﺗﻘﺮأ ﺣـﺮف
اﻟﻤﺸﻜﻠﺔ ﻣﺤﻠﻮﻟﺔ ﺑﺈﺳﺘﺨﺪام اﻟﺪاﻟﺔ feofاﻟﺘﻲ ﺗﺄﺧﺬ ﻣﺆﺷﺮ ﻟﻠﻤﻠﻒ و ﺗﺮﺟﻊ اﻟﻘﯿﻤـﺔ false
trueإذا ﻛﻨــﺎ ﻟــﻢ ﻧــﺼﻞ ﺑﻌــﺪ ..ﺑﻤﻌﻨــﻰ ﻳﻤﻜﻨــﻚ إذا وﺻــﻠﻨﺎ إﻟــﻰ ﻧﮫﺎﻳــﺔ اﻟﻤﻠــﻒ و اﻟﻘﯿﻤــﺔ
إﺳﺘﺨﺪام ﺟﻤﻠﺔ whileﺣﺘﻰ ﺗﻘﺮأ ﻛﻞ اﻟﺒﯿﺎﻧﺎت إﻋﺘﻤﺎداً ﻋﻠﻰ ﻣﺎ ﺗﺮﺟﻊ ﻟﻚ ھﺬه اﻟﺪاﻟﻪ ..
AHMED.ALREFAIE@YAHOO.COM
اﻟﺤﯿﺎة ﺑﺮﻣﺠﺔ ﺑﺮﻣﺠﮭﺎ ﺻﺢ ،،،،،،
اﻷن ھﺬا ﺑﺮﻧﺎﻣﺞ ﻛﺎﻣﻞ ﻳﻘﻮم ﺑﺈﻧﺸﺎء ﻣﻠﻒ و ﻛﺘﺎﺑـﺔ اﻟﺒﯿﺎﻧـﺎت ﻓﯿـﻪ ﺛـﻢ ﻗﺮاﺋـﺔ ﻛـﻞ اﻟﺒﯿﺎﻧـﺎت و
ﻃﺒﺎﻋﺘﮫﺎ ﻋﻠﻰ اﻟﺸﺎﺷﺔ ﺳﻮف ﻳﻮﺿﺢ ﻟﻚ اﻟﻤﺜﺎل اﻟﻌﻤﻠﯿﺔ ﻣﻦ اﻟﺒﺪاﻳﺔ و ﺣﺘﻰ اﻟﻨﮫﺎﻳﺔ
>#include<stdio.h
>#include<conio.h
>#include<string.h
)(void main
{
;)(clrscr
;int i=0
;"char set[]="\n\n\t\t Ahmed Alrefaie Say : Hi For You
;FILE *w
;)"w=fopen("C:\AHMED.TXT","wt
)]while(set[i
;){fputc(set[i],w
;i++
}
;)fclose(w
;i=0
;)"w=fopen("C:\AHMED.TXT","rt
))while(!feof(w
;)){printf("%c",fgetc(w
;i++
}
;)(getch
}
ﺑﻌﺪ ان ﺗﻜﺘﺐ اﻟﺒﺮﻧﺎﻣﺞ إﻓﺘﺢ اﻟﻘﺮص cو ﺳﻮف ﺗﺠﺪ ﻣﻠﻒ ﻧﺼﻲ ﺑﺈﺳﻤﻲ ""AHMED.TXT
و ﺳﻮف ﺗﺠﺪ ﻓﯿﻪ اﻟﺒﯿﺎﻧﺎت اﻟﺘﻲ ﻗﻤﻨﺎ ﺑﻜﺘﺎﺑﺘﮫﺎ .
اﻧﺎ ﻟﺴﺖ ﻣﺤﺘﺮﻓﺎً ﻓﻲ اﻟﺘﻌﺎﻣﻞ ﻣﻊ اﻟﻤﻠﻔﺎت ﺑﻠﻐﺔ اﻟﺴﻲ ﻛﻤﺎ ﺳﺒﻖ و أن ﻗﻠﺖ ﻟﻜﻢ و ﻟﻜﻦ
ھﺬا اﻟﺒﺮﻧﺎﻣﺞ ھﻮ ﺣﺼﯿﻠﺔ ﻓﮫﻤﻲ ﻟﻠﻤﻮﺿﻮع ﺑﺸﻜﻞ ﻣﺒﺪﺋﻲ ..
AHMED.ALREFAIE@YAHOO.COM