Download as pdf or txt
Download as pdf or txt
You are on page 1of 3

‫اﻟﺤﯿﺎة ﺑﺮﻣﺠﺔ ﺑﺮﻣﺠﮭﺎ ﺻﺢ ‪،،،،،،‬‬

‫ﻛﯿﻔﯿﺔ اﻟﺘﻌﺎﻣﻞ ﻣﻊ اﻟﻤﻠﻔﺎت ﺑﺈﺳﺘﺨﺪام ﻟﻐﺔ اﻟﺴﻲ‬


‫‪"..‬ﺷﺮح و ﺗﻘﺪﻳﻢ أﺣﻤﺪاﻟﺮﻓﺎﻋﻲ"‬ ‫ﻛﯿﻔﯿﺔ اﻟﺘﻌﺎﻣﻞ ﻣﻊ اﻟﻤﻠﻔﺎت ﺑﺈﺳﺘﺨﺪام ﻟﻐﺔ اﻟﺴﻲ‬
‫ﻃﺒﻌﺎً ‪ ،‬ﺳﻮف ﺗﺘﺨﻮف ﻓﻲ اﻟﺒﺪاﻳﺔ ﻣﻦ ھﺬه اﻟﻔﻜﺮة و ﺗﻌﺘﻘـﺪ ان اﻟﻤﻮﺿـﻮع ﻣﻌﻘـﺪ و ﺻـﻌﺐ و‬
‫ﻟﻜﻦ دﻋﻨﻲ أﺧﺒﺮك ﺑﺸﻲء ‪ ،‬ھﻞ ﻓﻜﺮت ﻓﻲ ﻛﯿﻔﯿﺔ اﻟﺘﻌﺎﻣﻞ ﻣﻊ اﻟﺬاﻛﺮة ؟؟؟‬
‫ﺳﻮف ﺗﻘﻮل ﺳﻮف ﻳﻜﻮن ذاﻟﻚ أﺻﻌﺐ و أﻧﺎ أﻗﻮل ﻟﻜﻦ أﻧﻚ ﻓﻌﻼً ﺗﺘﻌﺎﻣﻞ ﻣـﻊ اﻟـﺬاﻛﺮة و ﺑﻜـﻞ‬
‫ﺑﺴﺎﻃﺔ ﻛﻤﺜﺎل ﻋﻨﺪﻣﺎ ﺗﻜﺘﺐ ;‪int x‬‬
‫ﻧﻌﻢ ﻗﺪ ﻳﻜﻮن اﻟﻤﻮﺿﻮع ﺻﻌﺐ إذا ﻛﻨﺖ ﺳﻮف ﺗﻜﺘﺐ اﻟﻜﻮد ﺑﻠﻐﺔ اﻵﻟﺔ وﻟﻜﻨﻚ ﺳـﻮف ﺗﻜﺘـﺐ‬
‫اﻟﻜﻮد ﺑﻠﻐﺔ اﻟﺴﻲ و ﻟﻐﺔ اﻟﺴﻲ ﻓﯿﮫﺎ اﻟﻜﺜﯿﺮ ﻣﻦ اﻟﺪوال اﻟﺠﺎھﺰة اﻟﺘﻲ ﺳﻮف ﺗﺴﺎﻋﺪك ﻓﻲ‬
‫ﻋﻤﻠﻚ ﻟﮫﺬا ﻓﺎﻷﻣﺮ ﻓﻲ ﻗﻤﺔ اﻟﺒﺴﺎﻃﺔ ‪.‬‬
‫ﺳﻮف أﺧﺒﺮك ﺑﻤﻔﺎﺟﺌﺔ ھﻞ ﺗﻌﻠﻢ أﻧﻨﻲ ﻗﺒﻞ ﺳﺎﻋﺔ و ﻧﺼﻒ ﻣﻦ ﻛﺘﺎﺑﺔ ھﺬا اﻟﺸﺮح ﻟـﻢ اﻛـﻦ‬
‫أﻋﺮف أي ﺷﻲء ﻋﻦ ﻛﯿﻔﯿﺔ اﻟﺘﻌﺎﻣﻞ ﻣﻊ اﻟﻤﻠﻔﺎت ﺑﻠﻐﺔ اﻟﺴﻲ !! و ھﺎ أﻧﺎ أﻛﺘـﺐ اﻷن ھـﺬا‬
‫اﻟﺸﺮح و اﻧﺎ أﻗﻮل ھﺬا اﻟﻜﻼم ﻷﺛﺒﺖ ﻟﻚ ان اﻟﻤﻮﺿﻮع ﺳﮫﻞ ﺟﺪاً ﻓﺄﻧﺎ ﻗﺪ ﺗﻌﻠﻤﺖ ﻣﺎ أرﻳﺪ ﻣﻨﻪ‬
‫ﻓﻲ أﻗﻞ ﻣﻦ ﺳﺎﻋﺔ وﺳﻮف أﺣﺎول أن أﺑﺴﻂ ﻟﻚ اﻟﻤﻮﺿﻮع إﻟﻰ أﺑﻌﺪ اﻟﺤﺪود ‪..‬‬
‫اﻟﮫﺪف ﻣﻦ ﻛﻞ ھﺬا اﻟﻜﻼم ھﻮ اﻧﻨﻲ أرﻳﺪ أن أﺛﺒﺖ ﻟﻚ ان اﻟﻤﻮﺿﻮع ﺳﮫﻞ ﺟﺪاً و اﻵن دﻋﻮﻧﺎ‬
‫ﻣﻦ اﻟﻜﻼم و ھﯿﺎ ﺑﻨﺎ إﻟﻰ اﻟﻤﻮﺿﻮع ‪...‬‬
‫ﻣﺎذا ﺗﺮﻳﺪ ﻣﻦ اﻟﻤﻠﻔﺎت ؟؟؟‬
‫ﻃﺒﻌﺎً ﻧﺮﻳﺪ ﻣﺒﺪﺋﯿﺎً أﻣﺮﻳﻦ إﺛﻨﯿﻦ و ھﻤﺎ ‪:‬‬
‫‪ .1‬ﻛﺘﺎﺑﺔ ﺑﯿﺎﻧﺎت داﺧﻞ ﻣﻠﻒ ‪.‬‬
‫‪ .2‬ﻗﺮاﺋﺔ ﺑﯿﺎﻧﺎت ﻣﻦ اﻟﻤﻠﻒ ‪.‬‬
‫أوﻻ ﻟﻜﻲ ﺗﺘﻌﺎﻣﻞ ﻣﻊ اﻟﻤﻠﻔﺎت ﻣﻦ داﺧﻞ ﻟﻐﺔ اﻟﺴﻲ ﻳﺠﺐ أن ﺗﻀﻤﻦ اﻟﻤﻜﺘﺒﺔ ‪stdio.h‬‬
‫ﺛﺎﻧﯿﺎً ﺗﻌﺮﻳﻒ ﻣﺆﺷﺮ ﻟﻠﻤﻠﻒ و ﻳﻜﻮن ذاﻟﻚ ﺑﻜﺘﺎﺑﺔ اﻟﺴﻄﺮ اﻟﺘﺎﻟﻲ ‪:‬‬
‫‪FILE *w‬‬
‫ﻛﻠﻤﺔ "‪ "FILE‬ھﻲ ﻛﻠﻤﺔ ﻣﺤﺠﻮزة ﻓﻲ اﻟﻠﻐﺔ و ﻳﺠﺐ أن ﺗﻜﺘﺐ ﺑﺎﻟﺤﺮوف اﻟﻜﺒﯿﺮة‬
‫"‪ "*w‬ھﻮ إﺳﻢ اﻟﻤﺆﺷﺮ ﻟﻠﻤﻠﻒ و ﺗﻼﺣﻆ ﻋﻼﻣﺔ "*" ﻗﺒﻞ اﺳﻢ اﻟﻤﺆﺷﺮ و ذاﻟﻚ ﻻﻧﻪ ﻣﺆﺷﺮ‪.‬‬
‫اﻷن ﻳﺠﺐ ﻋﻠﯿﻨﺎ ﻓﺘﺢ اﻟﻤﻠﻒ ﺣﺘﻰ ﻧﻜﺘﺐ ﻓﯿﻪ اﻟﺒﯿﺎﻧﺎت و ھﻨﺎك داﻟﺔ ﺟﺎھﺰة ﻓﻲ ﻟﻐﺔ اﻟﺴﻲ‬
‫إﺳﻤﮫﺎ "‪ "fopen‬ﻳﺠﺐ ان ﻧﺮﺳﻞ إﻟﯿﮫﺎ إﺳﻢ اﻟﻤﻠﻒ ﻛﺎﻣﻼً ﻣﺸﺘﻤﻠﺔ اﻟﻤـﺴﺎر اﻟﻤﻮﺟـﻮد ﻓﯿـﻪ‬
‫اﻟﻤﻠﻒ و ﻛﺬاﻟﻚ ﻳﺠﺐ ان ﻧﺮﺳﻞ إﻟﯿﮫﺎ ﻧﻮﻋﯿـﺔ أو ﻃﺮﻳﻘـﺔ ﻓـﺘﺢ اﻟﻤﻠـﻒ ﺑﻤﻌﻨـﻰ ھـﻞ ﻧﺮﻳـﺪ ان‬
‫ﻧﻔﺘﺢ اﻟﻤﻠﻒ ﻟﻠﻘﺮآءة ﻓﻘﻂ أو ﻟﻠﻜﺘﺎﺑﺔ ﻓﻲ اﻟﻤﻠﻒ و ھﻨﺎك ﺑﻌﺾ اﻟﺘﻔﺎﺻﯿﻞ اﻷﺧـﺮى ﻓـﻲ ھـﺬا‬
‫اﻟﻤﻮﺿﻮع ﻟﻦ ﻧﺘﻄﺮق إﻟﯿﮫﺎ اﻷن ﻷﻧﻨﺎ ﻟﻦ ﻧﺴﺘﻔﯿﺪ ﻣﻨﮫﺎ ‪.‬‬
‫و ﺗﻜﻮن ﻃﺮﻳﻘﺔ إﺳﺘﺪﻋﺎء اﻟﺪاﻟﺔ ﻛﻤﺎ ﻓﻲ اﻟﺴﻄﺮ اﻟﺘﺎﻟﻲ ‪:‬‬
‫;)"‪w=fopen("C:\AHMED.TXT","wt‬‬

‫‪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‬‬

You might also like