<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>C programlama dersi proje ödevi &#8211; İNTERNET ALEMİ</title>
	<atom:link href="https://www.internetalemi.net/tag/c-programlama-dersi-proje-odevi/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.internetalemi.net</link>
	<description>İnternet, Bilişim, Yazılım Haber ve Günlüğü</description>
	<lastBuildDate>Tue, 17 Jan 2017 09:19:13 +0000</lastBuildDate>
	<language>tr</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://www.internetalemi.net/wp-content/uploads/2017/01/cropped-internet-alemi-logo-32x32.png</url>
	<title>C programlama dersi proje ödevi &#8211; İNTERNET ALEMİ</title>
	<link>https://www.internetalemi.net</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>C Proje Ödevi ve Çözümü</title>
		<link>https://www.internetalemi.net/c-proje-odevi-cozumu/</link>
					<comments>https://www.internetalemi.net/c-proje-odevi-cozumu/#respond</comments>
		
		<dc:creator><![CDATA[inovatif düşünce]]></dc:creator>
		<pubDate>Tue, 17 Jan 2017 09:19:13 +0000</pubDate>
				<category><![CDATA[Programlama]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[C programlama dersi proje ödevi]]></category>
		<category><![CDATA[C Programlama Projesi]]></category>
		<category><![CDATA[C Proje]]></category>
		<category><![CDATA[C Proje Ödevi]]></category>
		<category><![CDATA[C Proje Ödevi ve Çözümü]]></category>
		<category><![CDATA[C Projesi Çözümü]]></category>
		<category><![CDATA[Programlama Dersi Projesi]]></category>
		<guid isPermaLink="false">http://www.internetalemi.net/?p=2810</guid>

					<description><![CDATA[<p>C Proje Ödevi ve Çözümü başlıklı bu yazımızda üniversitelerde C dersi projesi olarak verilen bir proje ödevini ve çözümünü sunuyoruz. Umarız kendini bu konuda geliştirmek isteyen öğrencilere katkısı olur. Proje ödevine ait çözüm yazımızın en sonundadır. Proje Ödevi Önceden Bilinmesi Gerekenler File I/O Fonksiyonlar Döngüler Pointerlar Diziler Öğrenme Hedefleri Takım çalışması, file I/O, fonksiyon tanımlama [&#8230;]</p>
<p><a rel="nofollow" href="https://www.internetalemi.net/c-proje-odevi-cozumu/">C Proje Ödevi ve Çözümü</a> yazısı ilk önce <a rel="nofollow" href="https://www.internetalemi.net">İNTERNET ALEMİ</a> üzerinde ortaya çıktı.</p>
]]></description>
										<content:encoded><![CDATA[<p><strong>C Proje Ödevi ve Çözümü</strong> başlıklı bu yazımızda üniversitelerde C dersi projesi olarak verilen bir proje ödevini ve çözümünü sunuyoruz. Umarız kendini bu konuda geliştirmek isteyen öğrencilere katkısı olur.</p>
<p>Proje ödevine ait çözüm yazımızın en sonundadır.</p>
<h2>Proje Ödevi</h2>
<h3><span style="font-weight: 400;">Önceden Bilinmesi Gerekenler</span></h3>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">File I/O</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Fonksiyonlar</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Döngüler</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Pointerlar</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Diziler</span></li>
</ul>
<h3><span style="font-weight: 400;">Öğrenme Hedefleri</span></h3>
<p><span style="font-weight: 400;">Takım çalışması, file I/O, fonksiyon tanımlama ve çağırma metin manipülasyonları</span></p>
<h3><span style="font-weight: 400;">Projeye Genel Bakış</span></h3>
<p><span style="font-weight: 400;">Cat Linux ve benzer sistemlerde kullanılan bir komuttur.  Bir Linux terminalinde (komut satırında), cat kullanılarak dosyaların içeriği okunabilir/kopyalanabilir yada dosyaya yeni içerik eklenebilir. Bu projede cat programının işlevlerini gerçekleştirebilen bir C programı yazmanız istenmektedir.</span></p>
<h3><span style="font-weight: 400;">Proje Detayları ve Gereksinimler</span></h3>
<h3><span style="font-weight: 400;">Bu projede</span><b> komut satırından argüman alarak çalışan </b><b><i>cat</i></b> <span style="font-weight: 400;">isminde bir program yazacaksınız. </span><b>cat</b><span style="font-weight: 400;"> programı almış olduğu argümanların içeriğine göre aşağıdaki operasyonları yapacaktır:</span></h3>
<h3><span style="font-weight: 400;">Bir Metin Dosyasının İçeriğinin Gösterilmesi</span></h3>
<p><span style="font-weight: 400;">cat in en basit kullanımı bir dosyanın içeriğini göstermek için kullanılmasıdır. Mesela, bir metin dosyasının içeriğini göstermek için program şu şekilde çalışmalıdır:</span></p>
<p>&nbsp;</p>
<table>
<tbody>
<tr>
<td><span style="font-weight: 400;">cat file1.txt</span></td>
</tr>
</tbody>
</table>
<p><span style="font-weight: 400;">Program </span><b>file1.txt </b><span style="font-weight: 400;">isimli dosyanın içeriğini okuyup </span><b>stdout’</b><span style="font-weight: 400;">a göndererek dosya içeriğinin komut satırında gösterilmesini sağlayacaktır. Burada</span><b> file1.txt</b><span style="font-weight: 400;"> komut satırı argümanıdır.</span></p>
<p>&nbsp;</p>
<p><span style="font-weight: 400;">Eğer programa birden fazla dosya ismi argüman olarak verilirse, o zaman program sırayla bu dosyaların içeriklerini göstermelidir. Mesela, üç tane metin dosyasının içeriğini göstermek için:</span></p>
<table>
<tbody>
<tr>
<td><span style="font-weight: 400;">cat file1.txt file2.txt file3.txt</span></td>
</tr>
</tbody>
</table>
<p><span style="font-weight: 400;">Program önce </span><b>file1.txt</b><span style="font-weight: 400;">, sonra </span><b>file2.txt</b><span style="font-weight: 400;">, ve enson </span><b>file3.txt</b><span style="font-weight: 400;"> dosyalarının içeriğini göstermelidir(birbiri ardınca </span><b>stdout’</b><span style="font-weight: 400;">a göndermeli.).</span></p>
<h3><span style="font-weight: 400;">“&gt;” ve “&gt;&gt;” Operatörleriyle Çıkışın Yönlendirilmesi </span></h3>
<p><span style="font-weight: 400;">Eğer yönlendirme operatörü argüman olarak verildiyse o zaman çıkış stdout yerine yönlendirilen yere gönderilmelidir (yazılmalıdır). Yönlendirme operatörü şu şekilde kullanılabilmelidir:</span></p>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">Ya hemen </span><b>cat</b><span style="font-weight: 400;"> (yani program ismi) ’den sonra</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Yada son verilen dosya isminden önce (cat’den sonra kullanıldığında da yine son dosya isminden önce oluyor.)</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Eğer diğer yerlerde veya farklı şekillerde kullanılırsa program hata mesajı ve doğru kullanımıyla ilgili mesaj vermelidir.</span></li>
</ul>
<p><b>&gt; operatörü</b><span style="font-weight: 400;"> çıkışı sağa doğru yönlendirerek hemen bu operatörü takip eden argümana belirtilen dosyaya  çıkışı yazmalıdır (dosya sıfırlanarak yazılmalı). </span></p>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">Eğer sağ tarafta dosya ismi belirtilmemişse, bir hata mesajı gösterilerek programdan çıkılmalıdır.</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Eğer belirtilen dosya yoksa yeni bir dosya oluşturulmalıdır.</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Eğer dosya varsa, dosya içeriği sıfırlanarak üzerine yazılmalıdır.  </span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Eğer hemen </span><b>cat</b><span style="font-weight: 400;">, yani program ismi, komutundan sonra kullanılırsa, yeni bir satıra geçerek kullanıcının komut satırından vereceği girişi EOF’a kadar okuyarak, operatörden sonra verilen dosyaya bu girişi yazmalıdır. </span></li>
</ul>
<p><b>&gt;&gt;</b><span style="font-weight: 400;"> öperatörü çıkışı sağa </span><b>append(ekleme) özelliğiyle yönlendirir.</b><span style="font-weight: 400;"> Eğer sağ tarafta dosya ismi belirtilmemişse hata mesajı göstererek programdan çıkılmalıdır.</span></p>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">Eğer belirtilen dosya yoksa verilen isminde yeni bir dosya oluşturulmalıdır.</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Eğer varsa çıkış olarak verilen içerik, dosyanın sonuna eklenmelidir.   </span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Eğer hemen cat den sonra kullanılırsa, yeni bir satıra geçilmeli ve kullanıcının komut satırından vereceği giriş EOF’a kadar alınarak dosyaya eklenmelidir.</span></li>
</ul>
<p><span style="font-weight: 400;">Misaller:</span></p>
<table>
<tbody>
<tr>
<td><span style="font-weight: 400;">cat file1.txt &gt; file2.txt</span></td>
</tr>
</tbody>
</table>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">Bu</span><b> file1.txt</b><span style="font-weight: 400;"> nin içeriğini </span><b>file2.txt </b><span style="font-weight: 400;">ye kopyalamalıdır.</span>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">Eğer </span><b>file2.txt</b><span style="font-weight: 400;"> yoksa bu isimde yeni bir dosya oluşturulması,</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Eğer varsa dosyanın içeriğinin sıfırlanması ve yeni içeriğin yazılması gerekmektedir.</span></li>
</ul>
</li>
</ul>
<p>&nbsp;</p>
<table>
<tbody>
<tr>
<td><span style="font-weight: 400;">cat file1.txt file2.txt &gt; file3.txt</span></td>
</tr>
</tbody>
</table>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">Bu </span><b>file1.txt</b><span style="font-weight: 400;"> ve </span><b>file2.txt </b><span style="font-weight: 400;">dosyalarının içeriklerini</span><b> file3.txt </b><span style="font-weight: 400;">dosyasına yazmalıdır.</span>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">Eğer </span><b>file3.txt</b><span style="font-weight: 400;"> yoksa bu isimde yeni bir dosya oluşturulması,</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Eğer varsa dosyanın içeriğinin sıfırlanması ve yeni içeriğin yazılması gerekmektedir.</span></li>
</ul>
</li>
</ul>
<p>&nbsp;</p>
<table>
<tbody>
<tr>
<td><span style="font-weight: 400;">cat file1.txt file2.txt &gt; </span></td>
</tr>
</tbody>
</table>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">Önce hata mesajı gösterilmeli, ve sonra </span><b>cat</b><span style="font-weight: 400;">in doğru kullanımı gösterilerek programdan çıkılmalıdır.</span></li>
</ul>
<p>&nbsp;</p>
<table>
<tbody>
<tr>
<td><span style="font-weight: 400;">cat &gt; file1.txt</span></td>
</tr>
</tbody>
</table>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">Önce</span><b> komut satırında yeni bir satıra geçilecek new line in the command line</b><span style="font-weight: 400;">, sonra komut satırından kullanıcı girişi EOF’a (control-d)  kadar okunarak </span><b>file1.txt</b><span style="font-weight: 400;"> dosyasına yazılmalıdır.</span>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">Eğer </span><b>file1.txt</b><span style="font-weight: 400;"> yoksa bu isimde yeni bir dosya oluşturulması,</span></li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Eğer varsa dosyanın içeriğinin sıfırlanması ve yeni içeriğin yazılması gerekmektedir.</span></li>
</ul>
</li>
<li style="font-weight: 400;"><span style="font-weight: 400;">Benzer örnekler  &gt;&gt; operatörüyle de geçerlidir. Ancak tek fark &gt;&gt; operatörü ile yazma işlemi dosyanın sonuna ekleme (append) şeklinde olmalıdır.</span></li>
</ul>
<h3><span style="font-weight: 400;">Opsiyonlar</span></h3>
<p><span style="font-weight: 400;">Cat’den sonra aşağıdaki opsiyonlar da kullanılabilmelidir:</span></p>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">-b</span>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">Boş olmayan satırları numaralandırmalı</span></li>
</ul>
</li>
<li style="font-weight: 400;"><span style="font-weight: 400;">-n</span>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">Tüm satırları numaralandırmalı</span></li>
</ul>
</li>
<li style="font-weight: 400;"><span style="font-weight: 400;">-s</span>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">Tekrarlanan boş satırları çıkışta göstermemeli (kaldırmalı)</span></li>
</ul>
</li>
<li style="font-weight: 400;"><span style="font-weight: 400;">-h</span>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">Yazılan cat programın nasıl kullanıldığıyla ilgili kısa örnek ve açıklamalar göstermeli</span></li>
</ul>
</li>
</ul>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">-q</span>
<ul>
<li style="font-weight: 400;"><span style="font-weight: 400;">Hiç bir şey yapmadan programdan çıkmalı.</span></li>
</ul>
</li>
</ul>
<p><span style="font-weight: 400;">Yönlendirme operatörleri opsiyonlardan sonra kullanılabilmelidir. Misaller:</span></p>
<table>
<tbody>
<tr>
<td><span style="font-weight: 400;">cat -b file1.txt file2.txt</span></p>
<p><span style="font-weight: 400;">cat -b file1.txt &gt; file2.txt</span></p>
<p><span style="font-weight: 400;">cat -b &gt; file1.txt</span></p>
<p><span style="font-weight: 400;">cat -b &gt;&gt; file1.txt</span></p>
<p><span style="font-weight: 400;">cat -s file1.txt</span></p>
<p><span style="font-weight: 400;">cat -b file1.txt </span></p>
<p><span style="font-weight: 400;">cat -h     </span></p>
<p><span style="font-weight: 400;">cat -q</span></td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<h3><span style="font-weight: 400;">Teslim</span></h3>
<p><b>Bütün yazmış olduğunuz kodu tek </b><b>cat.c</b><b> isimli tek bir dosyaya koymalısınız. Başlangıç yorumunda grup üyelerinin isimleri listelenmeli ve üyeler arasında yapılan çalışmanın nasıl paylaşıldığı kısa olarak açıklanmalıdır. </b></p>
<h3><span style="font-weight: 400;">Değerlendirme</span></h3>
<p><span style="font-weight: 400;">%20 opsiyonsuz okuma</span></p>
<p><span style="font-weight: 400;">%40 opsiyonsuz yazma</span></p>
<p><span style="font-weight: 400;">%20 opsiyonla yazma</span></p>
<p><span style="font-weight: 400;">%20 opsiyonla yazma ve ekleme</span></p>
<p><span style="font-weight: 400;">Yapılan fazladan fonksiyonalite için 20 puana kadar bonus(Bu projeden en fazla 120 alınabilir.).</span></p>
<p><span style="font-weight: 400;">-10 puana kadar kodlama standartları</span></p>
<h2>C Proje Ödevi Çözümü</h2>
<p>#include &lt;stdio.h&gt;<br />
#include &lt;string.h&gt;<br />
unsigned char buyuk=0;<br />
unsigned char ciftbuyuk=0;</p>
<p>int main(unsigned int argc, char** argv) {<br />
FILE *dosya, *dosya2;<br />
int i,c,s=argc-1;<br />
// printf(&#8220;Program %u parametreye sahip: \n\r&#8221;,s);</p>
<p>// Varsa &gt; veya &gt;&gt; parametrelerinin yeri dogru mu? //////////////////////<br />
for (i = 1; i &lt;= s; ++i) {<br />
if((strcmp(argv[i],&#8221;&gt;&gt;&#8221;)==0)||(strcmp(argv[i],&#8221;&gt;&#8221;)==0))<br />
{<br />
if(i!=s-1)<br />
{<br />
printf(&#8220;%s operatorunun yeri yanlis\n\r&#8221;,argv[i]);<br />
return 0;<br />
}<br />
if(strcmp(argv[i],&#8221;&gt;&#8221;)==0) buyuk=1; // Eger &gt; varsa<br />
if(strcmp(argv[i],&#8221;&gt;&gt;&#8221;)==0) ciftbuyuk=1; // Eger &gt;&gt; varsa<br />
}<br />
else if(strcmp(argv[i],&#8221;-q&#8221;)==0) return 0; // Eger -q opsiyonu kullanildiysa programdan cik.<br />
else if(strcmp(argv[i],&#8221;-h&#8221;)==0) // Eger -h opsiyonu kullanildiysa<br />
{<br />
printf(&#8220;\n\rBu program verilen dosyalarin icerigini ekrana gosterme veya&#8221;);<br />
printf(&#8220;\n\rbu dosyalarn icerigini bir baska dosyaya yazma ya da ekleme&#8221;);<br />
printf(&#8220;\n\ramacli kullanilir.&#8221;);<br />
printf(&#8220;\n\rGenel Kullanim: cat dosya1 dosya2 dosya3 dosya4 &#8230;&#8221;);<br />
printf(&#8220;\n\rOrnek: cat bilgi.txt -&gt; Bu komut satiri bilgi.txt dosya icerigini&#8221;);<br />
printf(&#8220;\n\rekranda goruntuler.&#8221;);<br />
printf(&#8220;\n\rOrnek: cat bilgi.txt abc.txt -&gt; Bu komut satiri bilgi.txt ve abc.txt&#8221;);<br />
printf(&#8220;\n\rdosya iceriklerini ekranda goruntuler.&#8221;);<br />
printf(&#8220;\n\r&#8221;);<br />
return 0;<br />
}<br />
}<br />
/////////////////////////////////////////////////////////////////////////<br />
if(buyuk==1)<br />
{<br />
dosya2 = fopen(argv[s], &#8220;w+&#8221;);<br />
for (i = 1; i &lt;= s-2; ++i)<br />
{<br />
dosya=fopen (argv[i],&#8221;r&#8221;);<br />
if (dosya==NULL) perror (&#8220;Dosya bulunamadi&#8221;);<br />
else<br />
{<br />
do {<br />
c = fgetc (dosya);<br />
if(c!=&#8217;ÿ&#8217;) fputc(c, dosya2);<br />
} while (c != EOF);<br />
fclose (dosya);<br />
}<br />
}<br />
fclose (dosya2);<br />
}</p>
<p>else if(ciftbuyuk==1)<br />
{<br />
dosya2 = fopen(argv[s], &#8220;a+&#8221;);<br />
for (i = 1; i &lt;= s-2; ++i)<br />
{<br />
dosya=fopen (argv[i],&#8221;r&#8221;);<br />
if (dosya==NULL) perror (&#8220;Dosya bulunamadi&#8221;);<br />
else<br />
{<br />
do {<br />
c = fgetc (dosya);<br />
if(c!=&#8217;ÿ&#8217;) fputc(c, dosya2);<br />
} while (c != EOF);<br />
fclose (dosya);<br />
}<br />
}<br />
fclose (dosya2);<br />
}</p>
<p>else<br />
{<br />
// Parametre olarak verilen dosyalar ekrana yaziliyor&#8230;////////////////<br />
for (i = 1; i &lt;= s; ++i)<br />
{<br />
// printf(&#8220;%s\n\r&#8221;,argv[i]);<br />
dosya=fopen (argv[i],&#8221;r&#8221;);<br />
if (dosya==NULL) perror (&#8220;Dosya bulunamadi&#8221;);<br />
else<br />
{<br />
do {<br />
c = fgetc (dosya);<br />
if(c!=&#8217;ÿ&#8217;) putchar(c);<br />
} while (c != EOF);<br />
fclose (dosya);<br />
printf(&#8220;\n\r&#8221;);<br />
}<br />
}<br />
}<br />
return 0;<br />
}</p>
<h2>C Proje Ödevi Çözümünü İndir</h2>
<p>C Proje Ödevi ve Çözümü &#8216;nü <a href="http://www.internetalemi.net/wp-content/uploads/2017/01/C-proje-odevi-ve-cozumu.rar">burayı tıklayarak indirebilirsiniz.</a></p>
<p><a rel="nofollow" href="https://www.internetalemi.net/c-proje-odevi-cozumu/">C Proje Ödevi ve Çözümü</a> yazısı ilk önce <a rel="nofollow" href="https://www.internetalemi.net">İNTERNET ALEMİ</a> üzerinde ortaya çıktı.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.internetalemi.net/c-proje-odevi-cozumu/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
