<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Files in C, fseek</title>
		<link>http://www.allegro.cc/forums/view/585501</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Tue, 23 May 2006 07:54:55 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>There is 2 files: EMPLOYEES.DAT and STUDENTS.DAT(*** DOWNLOAD ATTACHMENT ***)</p><pre>
EMPLOYEES.DAT (3 records)
SURNAME		NAME		SALARY

Hunter		Rick		1000
Tokisada	Amakusa S.	1000
Duncan		Seymour		1200
---------------------------------------

STUDENTS.DAT (2 records)	
SURNAME		NAME		AVERAGE

Hunter		Rick		8
Tokisada	Amakusa S.	9
</pre><p>
update_salary function must allow user to update salary field of those employees who are also students and average &gt;7, in other words:<br />(if employees.name==students.name &amp;&amp; employees.surname==students.surname &amp;&amp; students.prome &gt;7) /* prome == average */</p><p>Therefore, update_salary should show these records:
</p><pre>
Hunter		Rick		8
Tokisada	Amakusa S.	9
</pre><p>

But it doesn&#39;t, it only shows one of them.<br />I know the problem is in the update_salary&#39;s nested whiles, I really don&#39;t know hot to use &quot;fseek&quot;.<br />Enough talk, HEEEELP PLEASE!!!!</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="p">#include &lt;stdio.h&gt;</span></td></tr><tr><td class="number">2</td><td><span class="p">#include &lt;conio.h&gt;</span></td></tr><tr><td class="number">3</td><td><span class="p">#include &lt;stdlib.h&gt;</span></td></tr><tr><td class="number">4</td><td><span class="p">#include &lt;string.h&gt;    /* Usado para strcpy */</span></td></tr><tr><td class="number">5</td><td>&#160;</td></tr><tr><td class="number">6</td><td><span class="k1">struct</span> employees_<span class="k2">{</span></td></tr><tr><td class="number">7</td><td>         <span class="k1">char</span> surname<span class="k2">[</span><span class="n">20</span><span class="k2">]</span><span class="k2">;</span></td></tr><tr><td class="number">8</td><td>         <span class="k1">char</span> name<span class="k2">[</span><span class="n">20</span><span class="k2">]</span><span class="k2">;</span></td></tr><tr><td class="number">9</td><td>         <span class="k1">float</span> salary<span class="k2">;</span></td></tr><tr><td class="number">10</td><td><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">11</td><td>&#160;</td></tr><tr><td class="number">12</td><td><span class="k1">struct</span> students_<span class="k2">{</span></td></tr><tr><td class="number">13</td><td>         <span class="k1">char</span> surname<span class="k2">[</span><span class="n">20</span><span class="k2">]</span><span class="k2">;</span></td></tr><tr><td class="number">14</td><td>         <span class="k1">char</span> name<span class="k2">[</span><span class="n">20</span><span class="k2">]</span><span class="k2">;</span></td></tr><tr><td class="number">15</td><td>         <span class="k1">float</span> prome<span class="k2">;</span></td></tr><tr><td class="number">16</td><td><span class="k2">}</span> <span class="k2">;</span></td></tr><tr><td class="number">17</td><td>&#160;</td></tr><tr><td class="number">18</td><td>&#160;</td></tr><tr><td class="number">19</td><td><span class="c">/* Prototipos */</span></td></tr><tr><td class="number">20</td><td><span class="k1">void</span> show_employees<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">21</td><td><span class="k1">void</span> show_students<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">22</td><td><span class="k1">void</span> update_salary<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">23</td><td>&#160;</td></tr><tr><td class="number">24</td><td><span class="k1">void</span> main<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">25</td><td><span class="k2">{</span></td></tr><tr><td class="number">26</td><td>&#160;</td></tr><tr><td class="number">27</td><td>show_employees<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">28</td><td>show_students<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">29</td><td>update_salary<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">30</td><td><span class="k2">}</span></td></tr><tr><td class="number">31</td><td>&#160;</td></tr><tr><td class="number">32</td><td><span class="c">/*----------------- Show students records stored in  STUDENTS.DAT ------------------------- */</span></td></tr><tr><td class="number">33</td><td><span class="k1">void</span> show_students<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span></td></tr><tr><td class="number">34</td><td><span class="k2">{</span></td></tr><tr><td class="number">35</td><td>FILE <span class="k3">*</span>archi_est<span class="k2">;</span></td></tr><tr><td class="number">36</td><td><span class="k1">struct</span> students_ students<span class="k2">;</span></td></tr><tr><td class="number">37</td><td><span class="k1">if</span><span class="k2">(</span><span class="k2">(</span>archi_est<span class="k3">=</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_337.html" target="_blank">fopen</a><span class="k2">(</span><span class="s">"STUDENTS.DAT"</span>,<span class="s">"rb"</span><span class="k2">)</span><span class="k2">)</span><span class="k3">=</span><span class="k3">=</span>NULL<span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">38</td><td>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"\nFile error"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">39</td><td>      <a href="http://www.delorie.com/djgpp/doc/libc/libc_383.html" target="_blank">getch</a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">40</td><td>      <a href="http://www.delorie.com/djgpp/doc/libc/libc_298.html" target="_blank">exit</a><span class="k2">(</span><span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">41</td><td><span class="k2">}</span></td></tr><tr><td class="number">42</td><td><a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"\nLIST DE STUDENTS"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">43</td><td><a href="http://www.delorie.com/djgpp/doc/libc/libc_349.html" target="_blank">fread</a><span class="k2">(</span><span class="k3">&amp;</span>students, <span class="k1">sizeof</span><span class="k2">(</span><span class="k1">struct</span> students_<span class="k2">)</span>, <span class="n">1</span>, archi_est<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">44</td><td><span class="k1">while</span><span class="k2">(</span><span class="k3">!</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_313.html" target="_blank">feof</a><span class="k2">(</span>archi_est<span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">45</td><td>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"\n SURNAME:%-15s  NAME:%-15s AVERAGE:%4.1f "</span>, students.surname, students.name,</td></tr><tr><td class="number">46</td><td>                                       students.prome<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">47</td><td>       <a href="http://www.delorie.com/djgpp/doc/libc/libc_349.html" target="_blank">fread</a><span class="k2">(</span><span class="k3">&amp;</span>students, <span class="k1">sizeof</span><span class="k2">(</span><span class="k1">struct</span> students_<span class="k2">)</span>, <span class="n">1</span>, archi_est<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">48</td><td><span class="k2">}</span></td></tr><tr><td class="number">49</td><td><a href="http://www.delorie.com/djgpp/doc/libc/libc_308.html" target="_blank">fclose</a><span class="k2">(</span>archi_est<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">50</td><td><a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"\nPress a key to continue . . . . . . \n"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">51</td><td><a href="http://www.delorie.com/djgpp/doc/libc/libc_383.html" target="_blank">getch</a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">52</td><td><span class="k2">}</span></td></tr><tr><td class="number">53</td><td>&#160;</td></tr><tr><td class="number">54</td><td><span class="c">/*----------------show employees records stored in  EMPLOYEES.DAT----------------------------- */</span></td></tr><tr><td class="number">55</td><td><span class="k1">void</span> show_employees<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span></td></tr><tr><td class="number">56</td><td><span class="k2">{</span></td></tr><tr><td class="number">57</td><td>FILE <span class="k3">*</span>archi_emp<span class="k2">;</span></td></tr><tr><td class="number">58</td><td><span class="k1">struct</span> employees_ employees<span class="k2">;</span></td></tr><tr><td class="number">59</td><td><a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"\nPress a key ..."</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">60</td><td><a href="http://www.delorie.com/djgpp/doc/libc/libc_383.html" target="_blank">getch</a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">61</td><td><span class="c">/* Abro archivo y muestro los datos que se grabaron */</span></td></tr><tr><td class="number">62</td><td><span class="k1">if</span><span class="k2">(</span><span class="k2">(</span>archi_emp<span class="k3">=</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_337.html" target="_blank">fopen</a><span class="k2">(</span><span class="s">"EMPLOYEES.DAT"</span>,<span class="s">"rb"</span><span class="k2">)</span><span class="k2">)</span><span class="k3">=</span><span class="k3">=</span>NULL<span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">63</td><td>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"\nFile error"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">64</td><td>      <a href="http://www.delorie.com/djgpp/doc/libc/libc_383.html" target="_blank">getch</a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">65</td><td>      <a href="http://www.delorie.com/djgpp/doc/libc/libc_298.html" target="_blank">exit</a><span class="k2">(</span><span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">66</td><td><span class="k2">}</span></td></tr><tr><td class="number">67</td><td><a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"\nLIST DE EMPLOYEES"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">68</td><td><a href="http://www.delorie.com/djgpp/doc/libc/libc_349.html" target="_blank">fread</a><span class="k2">(</span><span class="k3">&amp;</span>employees, <span class="k1">sizeof</span><span class="k2">(</span><span class="k1">struct</span> employees_<span class="k2">)</span>, <span class="n">1</span>, archi_emp<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">69</td><td><span class="k1">while</span><span class="k2">(</span><span class="k3">!</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_313.html" target="_blank">feof</a><span class="k2">(</span>archi_emp<span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">70</td><td>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"\n SURNAME:%-15s  NAME:%-15s SALARY:%4.1f  "</span>, employees.surname, employees.name,</td></tr><tr><td class="number">71</td><td>                                     employees.salary<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">72</td><td>      <a href="http://www.delorie.com/djgpp/doc/libc/libc_349.html" target="_blank">fread</a><span class="k2">(</span><span class="k3">&amp;</span>employees, <span class="k1">sizeof</span><span class="k2">(</span><span class="k1">struct</span> employees_<span class="k2">)</span>, <span class="n">1</span>, archi_emp<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">73</td><td><span class="k2">}</span></td></tr><tr><td class="number">74</td><td><a href="http://www.delorie.com/djgpp/doc/libc/libc_308.html" target="_blank">fclose</a><span class="k2">(</span>archi_emp<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">75</td><td><a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"\nPress a key to continue . . . . . . \n"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">76</td><td><a href="http://www.delorie.com/djgpp/doc/libc/libc_383.html" target="_blank">getch</a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">77</td><td><span class="k2">}</span></td></tr><tr><td class="number">78</td><td>&#160;</td></tr><tr><td class="number">79</td><td><span class="c">/*Lee registros de EMPLOYEES.DAT, y si se encuentran en STUDENTS.DAT &amp;&amp; promedio &gt; 7 entonces</span></td></tr><tr><td class="number">80</td><td><span class="c">  update salary de dichos registros.  */</span></td></tr><tr><td class="number">81</td><td><span class="k1">void</span> update_salary<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span></td></tr><tr><td class="number">82</td><td><span class="k2">{</span></td></tr><tr><td class="number">83</td><td>FILE <span class="k3">*</span>archi_emp<span class="k2">;</span></td></tr><tr><td class="number">84</td><td>FILE <span class="k3">*</span>archi_est<span class="k2">;</span></td></tr><tr><td class="number">85</td><td><span class="k1">struct</span> employees_ employees<span class="k2">;</span></td></tr><tr><td class="number">86</td><td><span class="k1">struct</span> students_ students<span class="k2">;</span></td></tr><tr><td class="number">87</td><td>&#160;</td></tr><tr><td class="number">88</td><td>&#160;</td></tr><tr><td class="number">89</td><td><span class="k1">int</span> i<span class="k3">=</span><span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">90</td><td>&#160;</td></tr><tr><td class="number">91</td><td><span class="c">/* Abro archivo employees para lectura y escritura */</span></td></tr><tr><td class="number">92</td><td><span class="k1">if</span><span class="k2">(</span><span class="k2">(</span>archi_emp <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_337.html" target="_blank">fopen</a><span class="k2">(</span><span class="s">"EMPLOYEES.DAT"</span>,<span class="s">"r+b"</span><span class="k2">)</span><span class="k2">)</span><span class="k3">=</span><span class="k3">=</span>NULL<span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">93</td><td>      <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"\nFile error"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">94</td><td>      <a href="http://www.delorie.com/djgpp/doc/libc/libc_383.html" target="_blank">getch</a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">95</td><td>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_298.html" target="_blank">exit</a><span class="k2">(</span><span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">96</td><td><span class="k2">}</span></td></tr><tr><td class="number">97</td><td>&#160;</td></tr><tr><td class="number">98</td><td><span class="c">/* Abro archivo students para lectura */</span></td></tr><tr><td class="number">99</td><td><span class="k1">if</span><span class="k2">(</span><span class="k2">(</span>archi_est <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_337.html" target="_blank">fopen</a><span class="k2">(</span><span class="s">"STUDENTS.DAT"</span>,<span class="s">"rb"</span><span class="k2">)</span><span class="k2">)</span><span class="k3">=</span><span class="k3">=</span>NULL<span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">100</td><td>      <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"\nFile error"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">101</td><td>      <a href="http://www.delorie.com/djgpp/doc/libc/libc_383.html" target="_blank">getch</a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">102</td><td>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_298.html" target="_blank">exit</a><span class="k2">(</span><span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">103</td><td><span class="k2">}</span></td></tr><tr><td class="number">104</td><td>&#160;</td></tr><tr><td class="number">105</td><td>&#160;</td></tr><tr><td class="number">106</td><td><a href="http://www.delorie.com/djgpp/doc/libc/libc_349.html" target="_blank">fread</a><span class="k2">(</span><span class="k3">&amp;</span>employees, <span class="k1">sizeof</span><span class="k2">(</span><span class="k1">struct</span> employees_<span class="k2">)</span>, <span class="n">1</span>, archi_emp<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">107</td><td><span class="k1">while</span><span class="k2">(</span><span class="k3">!</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_313.html" target="_blank">feof</a><span class="k2">(</span>archi_emp<span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k3">!</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_313.html" target="_blank">feof</a><span class="k2">(</span>archi_est<span class="k2">)</span><span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">108</td><td>&#160;</td></tr><tr><td class="number">109</td><td>      <a href="http://www.delorie.com/djgpp/doc/libc/libc_349.html" target="_blank">fread</a><span class="k2">(</span><span class="k3">&amp;</span>students, <span class="k1">sizeof</span><span class="k2">(</span><span class="k1">struct</span> students_<span class="k2">)</span>, <span class="n">1</span>, archi_est<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">110</td><td>    <span class="k1">while</span><span class="k2">(</span><span class="k3">!</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_313.html" target="_blank">feof</a><span class="k2">(</span>archi_est<span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k3">!</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_313.html" target="_blank">feof</a><span class="k2">(</span>archi_emp<span class="k2">)</span> <span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">111</td><td>      <span class="k1">if</span><span class="k2">(</span>strcmpi<span class="k2">(</span>employees.name, students.name<span class="k2">)</span><span class="k3">=</span><span class="k3">=</span><span class="n">0</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> strcmpi<span class="k2">(</span>employees.surname, students.surname<span class="k2">)</span><span class="k3">=</span><span class="k3">=</span><span class="n">0</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k2">(</span>students.prome&gt;7<span class="k2">)</span><span class="k2">)</span>  <span class="k2">{</span></td></tr><tr><td class="number">112</td><td>            <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"\nThis employeeo %s %s is also a student and he has an average higher than 7"</span>,</td></tr><tr><td class="number">113</td><td>                   employees.name, employees.surname<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">114</td><td>             <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"\nUpdate salary please "</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">115</td><td>             <a href="http://www.delorie.com/djgpp/doc/libc/libc_315.html" target="_blank">fflush</a><span class="k2">(</span>stdin<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">116</td><td>             <a href="http://www.delorie.com/djgpp/doc/libc/libc_670.html" target="_blank">scanf</a><span class="k2">(</span><span class="s">"%f"</span>,<span class="k3">&amp;</span>employees.salary<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">117</td><td>&#160;</td></tr><tr><td class="number">118</td><td>               <a href="http://www.delorie.com/djgpp/doc/libc/libc_354.html" target="_blank">fseek</a><span class="k2">(</span>archi_emp, <span class="k3">-</span><span class="n">1</span>L<span class="k3">*</span><span class="k1">sizeof</span><span class="k2">(</span><span class="k1">struct</span> employees_<span class="k2">)</span>, SEEK_CUR<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">119</td><td>          <a href="http://www.delorie.com/djgpp/doc/libc/libc_371.html" target="_blank">fwrite</a><span class="k2">(</span><span class="k3">&amp;</span>employees, <span class="k1">sizeof</span><span class="k2">(</span><span class="k1">struct</span> employees_<span class="k2">)</span>, <span class="n">1</span>, archi_emp<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">120</td><td>               <a href="http://www.delorie.com/djgpp/doc/libc/libc_354.html" target="_blank">fseek</a><span class="k2">(</span>archi_emp, <span class="n">1</span>L<span class="k3">*</span><span class="k1">sizeof</span><span class="k2">(</span><span class="k1">struct</span> employees_<span class="k2">)</span>, SEEK_CUR<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">121</td><td>              i<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span></td></tr><tr><td class="number">122</td><td>         <span class="k2">}</span></td></tr><tr><td class="number">123</td><td>         <a href="http://www.delorie.com/djgpp/doc/libc/libc_349.html" target="_blank">fread</a><span class="k2">(</span><span class="k3">&amp;</span>students, <span class="k1">sizeof</span><span class="k2">(</span><span class="k1">struct</span> students_<span class="k2">)</span>, <span class="n">1</span>, archi_est<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">124</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">125</td><td>      <a href="http://www.delorie.com/djgpp/doc/libc/libc_349.html" target="_blank">fread</a><span class="k2">(</span><span class="k3">&amp;</span>employees, <span class="k1">sizeof</span><span class="k2">(</span><span class="k1">struct</span> employees_<span class="k2">)</span>, <span class="n">1</span>, archi_emp<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">126</td><td>      <a href="http://www.delorie.com/djgpp/doc/libc/libc_354.html" target="_blank">fseek</a><span class="k2">(</span>archi_est, <span class="n">0</span>L, SEEK_SET<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">127</td><td><span class="k2">}</span></td></tr><tr><td class="number">128</td><td><span class="k1">if</span><span class="k2">(</span>i&gt;1<span class="k2">)</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"\n%d records updated."</span>,i<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">129</td><td><span class="k1">if</span><span class="k2">(</span>i<span class="k3">=</span><span class="k3">=</span><span class="n">0</span><span class="k2">)</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"\nno employees met the required requiriments"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">130</td><td><a href="http://www.delorie.com/djgpp/doc/libc/libc_308.html" target="_blank">fclose</a><span class="k2">(</span>archi_est<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">131</td><td><a href="http://www.delorie.com/djgpp/doc/libc/libc_308.html" target="_blank">fclose</a><span class="k2">(</span>archi_emp<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">132</td><td><a href="http://www.delorie.com/djgpp/doc/libc/libc_383.html" target="_blank">getch</a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">133</td><td>&#160;</td></tr><tr><td class="number">134</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Paul whoknows)</author>
		<pubDate>Sat, 20 May 2006 07:47:10 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>If I remember, fwrite moves the position in the file along by however much it writes, so that second fseek is not needed:
</p><div class="source-code snippet"><div class="inner"><pre>               <a href="http://www.delorie.com/djgpp/doc/libc/libc_354.html" target="_blank">fseek</a><span class="k2">(</span>archi_emp, <span class="k3">-</span><span class="n">1</span>L<span class="k3">*</span><span class="k1">sizeof</span><span class="k2">(</span><span class="k1">struct</span> employees_<span class="k2">)</span>, SEEK_CUR<span class="k2">)</span><span class="k2">;</span>
          <a href="http://www.delorie.com/djgpp/doc/libc/libc_371.html" target="_blank">fwrite</a><span class="k2">(</span><span class="k3">&amp;</span>employees, <span class="k1">sizeof</span><span class="k2">(</span><span class="k1">struct</span> employees_<span class="k2">)</span>, <span class="n">1</span>, archi_emp<span class="k2">)</span><span class="k2">;</span>
<span class="c">/* delete this ---&gt;        fseek(archi_emp, 1L*sizeof(struct employees_), SEEK_CUR) */</span>
</pre></div></div><p>

I&#39;d also ask you to watch your brackets and indentations:
</p><div class="source-code snippet"><div class="inner"><pre><span class="k2">{</span>
   it will make stuff
   <span class="k2">{</span>
      a lot clearer
   <span class="k2">}</span>
   honest<span class="k3">!</span>
<span class="k2">}</span>
</pre></div></div><p>

h2g2bob
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Physics Dave)</author>
		<pubDate>Sat, 20 May 2006 17:11:32 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>looks like homework!</p><p>which bit of the fseek documentation dont you understand ?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (A J)</author>
		<pubDate>Sat, 20 May 2006 17:27:42 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Why are you writing structs directly to the file?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (BAF)</author>
		<pubDate>Sat, 20 May 2006 18:10:31 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
If I remember, fwrite moves the position in the file along by however much it writes, so that second fseek is not needed:
</p></div></div><p>

I did what you said, and it almost works, but it really doesn&#39;t, because it get trapped in a neverending loop.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
which bit of the fseek documentation dont you understand ?
</p></div></div><p>

I don&#39;t know how to control file pointers, I mean, fwrite and fread automatic moves the file pointer forward, but fseek doesn&#39;t work sometimes, look at my source, it must show 2 aforementioned records, but it doesn&#39;t.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Why are you writing structs directly to the file?
</p></div></div><p>

Because I can add unlimited records to my files, that wouldn&#39;t be possible using static arrays, and we are not allowed to use dynamic memory allocation yet.<br />Any advice?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Paul whoknows)</author>
		<pubDate>Sat, 20 May 2006 23:05:23 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Any advice?
</p></div></div><p>
Never, ever use fread and fwrite.<br />That said, there are situations when they&#39;re useful, but this is not one of them.<br />For advise, I&#39;d tell you to store data on disk as a text file. This is not a direct answer to your question, however.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
we are not allowed to use dynamic memory allocation yet.
</p></div></div><p>
Were you told not to, or haven&#39;t they told you how to do it? If the former, that sucks. If the latter, just use it if you think it&#39;s best.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Evert)</author>
		<pubDate>Sun, 21 May 2006 00:18:45 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Never, ever use fread and fwrite.
</p></div></div><p>
What can I use instead?</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
For advise, I&#39;d tell you to store data on disk as a text file.
</p></div></div><p>
Only binary files must be used, that&#39;s an order, that limitation is part of the problem.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Were you told not to...
</p></div></div><p>
Yes, another order.<br />I try to do the best I can with the tools they allow me to use, that&#39;s part of the problem, and yes, it sucks.<br />However, the posted code almost works,  it only needs a minor tweak, but I can&#39;t figure out!
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Paul whoknows)</author>
		<pubDate>Sun, 21 May 2006 00:40:08 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Wow.. what kind of programming class is this if they limit what you can do and teach you to fread/fwrite structs. <img src="http://www.allegro.cc/forums/smileys/undecided.gif" alt=":-/" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (BAF)</author>
		<pubDate>Sun, 21 May 2006 02:18:58 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Dynamic memory allocation, LIFO, FIFO, binary trees, all that stuff is comming later, but now they force us to use these &quot;basic tools&quot;, don&#39;t ask me why, I am just a student.<br />BTW, if you look at the code, I am defining the file pointer in every function, why? because we are not allowed to use global variables, it sounds stupid, but now I see why they do it.<br /><a href="http://www.allegro.cc/forums/thread/583086/584227#target">Look at this tread</a>, they forced me to use pointer notation in a 2d array, that wasn&#39;t easy at first, but now I have a better understanding of how it works in a deeper view.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Paul whoknows)</author>
		<pubDate>Sun, 21 May 2006 11:44:54 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>for any text file you plan to parse, if its less than 100k,  just read it into memory and use regular char* on it,  it will be </p><p>1. faster.<br />2. safer.<br />3. easier.<br />4. easier to modify/upgrade/improve later.</p><p>infact, i would go as far as 200k or 300k  before reconsidering what i just said.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (A J)</author>
		<pubDate>Sun, 21 May 2006 22:29:57 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Or use some <a href="http://www.allegro.cc/manual/api/file-and-compression-routines/">PACKFILE</a> routines, with compressed-or-not PACKFILE *file. All of them are endian-safe.</p><p>little example:
</p><div class="source-code snippet"><div class="inner"><pre><a href="http://www.allegro.cc/manual/PACKFILE" target="_blank"><span class="a">PACKFILE</span></a> <span class="k3">*</span>in<span class="k2">;</span>
<span class="k1">int</span> value <span class="k3">=</span> <span class="n">10</span><span class="k2">;</span>
.
.
in <span class="k3">=</span> <a href="http://www.allegro.cc/manual/pack_fopen" target="_blank"><span class="a">pack_fopen</span></a><span class="k2">(</span> <span class="s">"file.dat"</span> , <span class="s">"rp"</span> <span class="k2">)</span><span class="k2">;</span>
.
<a href="http://www.allegro.cc/manual/pack_iputl" target="_blank"><span class="a">pack_iputl</span></a><span class="k2">(</span> in , value <span class="k2">)</span><span class="k2">;</span> <span class="c">/* write a number */</span>
.
value <span class="k3">=</span> <a href="http://www.allegro.cc/manual/pack_igetl" target="_blank"><span class="a">pack_igetl</span></a><span class="k2">(</span> in <span class="k2">)</span><span class="k2">;</span> <span class="c">/* read a number */</span>
.
<a href="http://www.allegro.cc/manual/pack_fclose" target="_blank"><span class="a">pack_fclose</span></a><span class="k2">(</span> in <span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (GullRaDriel)</author>
		<pubDate>Sun, 21 May 2006 22:50:37 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
for any text file you plan to parse, if its less than 100k, just read it into memory and use regular char* on it, it will be
</p></div></div><p>
Only binary file must be used.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Or use some PACKFILE routines
</p></div></div><p>
Only ANSI C must be used.(I must remove conio.h)</p><p>I appreciate all your help, and I am going to use it in my own projects, but I can&#39;t use it here, because of the aforementioned restrictions, thanks.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Paul whoknows)</author>
		<pubDate>Sun, 21 May 2006 23:41:24 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You can just read/write your data in some (opaque, binary) file instead of dynamically allocating memory for it. The file size will automagically grow as you write things into it, so you even have an automatically resizing container. It&#39;ll be ridiculously slow for any real-world application, but it may work for your case.</p><p>Also, you may want to use fgets() to read the file one line at a time (although you&#39;ll need to deal with the really long line problem). Or, if you get to use C++, then std::readline(std::istream&amp;, std::string&amp;) will do the trick.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Bob)</author>
		<pubDate>Mon, 22 May 2006 00:18:15 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
You can just read/write your data in some (opaque, binary) file instead of dynamically allocating memory for it.
</p></div></div><p>

That&#39;s exactly what I am doing right now.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Also, you may want to use fgets() to read the file one line at a time
</p></div></div><p>

Can I use fgets in binary files? </p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Or, if you get to use C++. . .
</p></div></div><p>

ANSI C I must only use.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Paul whoknows)</author>
		<pubDate>Tue, 23 May 2006 07:54:55 +0000</pubDate>
	</item>
</rss>
