<?xml version="1.0" encoding="ISO-8859-1"?>

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
	<channel>
		<title>Forum du club des développeurs et IT Pro - Débuter</title>
		<link>https://www.developpez.net/forums/</link>
		<description><![CDATA[Forum d'entraide pour débuter en langage C. Avant de poster -> FAQ C]]></description>
		<language>fr</language>
		<lastBuildDate>Tue, 25 Aug 2026 14:08:06 GMT</lastBuildDate>
		<generator>vBulletin</generator>
		<ttl>15</ttl>
		<image>
			<url>https://forum.developpez.be/images/misc/rss.png</url>
			<title>Forum du club des développeurs et IT Pro - Débuter</title>
			<link>https://www.developpez.net/forums/</link>
		</image>
		<item>
			<title>Question passage de pointeur sur tableau de structures</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2180593&amp;goto=newpost</link>
			<pubDate>Sun, 23 Nov 2025 16:37:33 GMT</pubDate>
			<description>Hello, je refais du C (avec...</description>
			<content:encoded><![CDATA[<div>Hello, je refais du C (avec SDCC) et évidemment je perds les pédales (et la tête un peu). Si des pro du C peuvent m'aider… J'explique :<br />
<br />
Je crée une structure (pour un point 2D, avec son adresse dans la mémoire vidéo, pour ne pas la recalculer plus tard), je crée un tableau de cette structure (une quarantaine de « points » pour me faire un <i>starfield</i> basique). je fais une fonction pour créer mes 40 points et les remplir. Je lui passe le tableau sous forme de pointeur, car j'aimerais bidouiller le contenu du tableau plus tard, en dehors de cette fonction. <i>A priori</i>, tout semble marcher mais en réalité, si j'essaie de lire le tableau après le passage dans la fonction, les valeurs ne sont pas là. donc en gros, il n'a pas modifié le tableau (malgré le pointeur) mais sans doute une copie ?<br />
<br />
Bref, je mets le code (juste les bouts concernés). Si quelqu'un peut me dire où ça coince pour passer un tableau de <i>struct</i> en paramètre et non une copie ?<br />
MERCI  !<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #0000ff;">struct</span> _point2D
<span style="color: black;">&#123;</span>
 <span style="color: #0000ff;">unsigned</span> <span style="color: #0000ff;">char</span> X;
   <span style="color: #0000ff;">unsigned</span> <span style="color: #0000ff;">char</span> Y;
 <span style="color: #0000ff;">unsigned</span> <span style="color: #0000ff;">char</span> *Adress;
<span style="color: black;">&#125;</span>;
<span style="color: #0000ff;">struct</span> _point2D TAB_stars<span style="color: black;">&#91;</span>STARS_NUM<span style="color: black;">&#93;</span>;
<span style="color: #0000ff;">void</span> Stars_Create<span style="color: black;">&#40;</span><span style="color: #0000ff;">struct</span> _point2D *TAB_stars_init<span style="color: black;">&#91;</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
<span style="color: black;">&#123;</span>
 <span style="color: #0000ff;">unsigned</span> <span style="color: #0000ff;">char</span> i = <span style="color: #cc66cc;">0</span>;
 <span style="color: #0000ff;">for</span><span style="color: black;">&#40;</span>i = <span style="color: #cc66cc;">0</span>; i &lt; STARS_NUM; i++<span style="color: black;">&#41;</span>
 <span style="color: black;">&#123;</span>
 <span style="color: black;">&#40;</span>*TAB_stars_init<span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>.X = rand<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> % <span style="color: black;">&#40;</span>MAX_X+<span style="color: #cc66cc;">1</span><span style="color: black;">&#41;</span>;
 ...
     <span style="color: black;">&#40;</span>*TAB_stars_init<span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>.Adress = Mode0_Pixel_Compute_Adress<span style="color: black;">&#40;</span><span style="color: black;">&#40;</span>*TAB_stars_init<span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>.X, <span style="color: black;">&#40;</span>*TAB_stars_init<span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>.Y,<span style="color: black;">&#40;</span><span style="color: #0000ff;">unsigned</span> <span style="color: #0000ff;">int</span><span style="color: black;">&#41;</span><span style="color: #cc66cc;">0xC000</span><span style="color: black;">&#41;</span>;
 *<span style="color: black;">&#40;</span>*TAB_stars_init<span style="color: black;">&#41;</span><span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span>.Adress|=<span style="color: #cc66cc;">0b10000000</span>;
...
<span style="color: black;">&#125;</span>
Stars_Create<span style="color: black;">&#40;</span>&amp;TAB_stars<span style="color: black;">&#41;</span>;</pre></td></tr></table></code><hr />
</div><br />
ici si je veux lire dans TAB_stars[x].Adress je n'ai pas les bonnes valeurs créés dans la fonction (j'ai mis un print dans la fonction et un en dehors et les valeurs ne correspondent pas... j'en déduis que ce qui est modifié dans la fonction est &quot;resté&quot; dans la fonction... HELP !<br />
<br />
ps : je travaille sur SDCC pour une machine 8 bits.</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f897/c-cpp/c/debuter/">Débuter</category>
			<dc:creator>henri_b</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2180593/c-cpp/c/debuter/question-passage-pointeur-tableau-structures/</guid>
		</item>
		<item>
			<title>C création de fichier 16 bits *.COM sous DOS (Question: Hexadecimal)</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2179038&amp;goto=newpost</link>
			<pubDate>Thu, 04 Sep 2025 14:13:46 GMT</pubDate>
			<description>Bonjour, 
 
Je viens de faire...</description>
			<content:encoded><![CDATA[<div>Bonjour,<br />
<br />
Je viens de faire un petit programme en C qui crée un fichier COM pour MS-DOS / peut qu'il marche sur d'autre système DOS (testé sous MS-DOS 6.22).<br />
<br />
En premier lieu j'ai créé un programme COM minimal en assembleur qui s'ouvre et se ferme directement sous DOS sans rien faire d'autre.<br />
<br />
En visionnant le code hexadecimal de ce programme ça se résume à ceci:<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code">B8 <span style="color: #cc66cc;">00</span> <span style="color: #cc66cc;">4</span>C CD <span style="color: #cc66cc;">21</span></code><hr />
</div>J'ai voullu pour étude créer un logiciel en C capable de générer ce même programme en se lancant.<br />
<br />
J'ai réussi au final a avoir un code similaire généré par mon programme C, cependant il y a 2 '0' en plus à la fin du fichier COM c.a.d ceci:<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code">B8 <span style="color: #cc66cc;">00</span> <span style="color: #cc66cc;">4</span>C CD <span style="color: #cc66cc;">21</span> <span style="color: #cc66cc;">00</span></code><hr />
</div>A savoir j'utilise la fonction C fwrite() pour générer du code dans mon fichier en mode binaire.<br />
<br />
Voici le code source du programme en C capable de générer le fichier COM éxecutable.<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #339933;">#include</span><span style="color: #FF0000;"> &lt;stdio.h&gt;</span>
<span style="color: #0000ff;">int</span> main<span style="color: black;">&#40;</span><span style="color: #0000ff;">void</span><span style="color: black;">&#41;</span><span style="color: black;">&#123;</span>
        <span style="color: #0000ff;">int</span> a=<span style="color: #cc66cc;">0</span>;
        <span style="color: #0000ff;">FILE</span> *fp;
        <span style="color: #0000ff;">char</span> str<span style="color: black;">&#91;</span><span style="color: #cc66cc;">8</span><span style="color: black;">&#93;</span>;
        fp=fopen<span style="color: black;">&#40;</span><span style="color: #FF0000;">&quot;file.com&quot;</span>,<span style="color: #FF0000;">&quot;wb&quot;</span><span style="color: black;">&#41;</span>;
&nbsp;
        <span style="color: #0000ff;">if</span> <span style="color: black;">&#40;</span>fp==<span style="color: #0080ff;">NULL</span><span style="color: black;">&#41;</span>
                <span style="color: #0000ff;">return</span> <span style="color: #cc66cc;">-1</span>;
        a=<span style="color: #cc66cc;">184</span>; <span style="color: #808080;">/*org 100*/</span>
        fwrite <span style="color: black;">&#40;</span>&amp;a,<span style="color: #0000ff;">sizeof</span><span style="color: black;">&#40;</span>a<span style="color: black;">&#41;</span>,<span style="color: #cc66cc;">1</span>,fp<span style="color: black;">&#41;</span>;
        a=<span style="color: #cc66cc;">52556</span>;
        fwrite <span style="color: black;">&#40;</span>&amp;a,<span style="color: #0000ff;">sizeof</span><span style="color: black;">&#40;</span>a<span style="color: black;">&#41;</span>,<span style="color: #cc66cc;">1</span>,fp<span style="color: black;">&#41;</span>;
        a=<span style="color: #cc66cc;">33</span>;
        fwrite <span style="color: black;">&#40;</span>&amp;a,<span style="color: #0000ff;">sizeof</span><span style="color: black;">&#40;</span>a<span style="color: black;">&#41;</span>,<span style="color: #cc66cc;">1</span>,fp<span style="color: black;">&#41;</span>;
        fclose<span style="color: black;">&#40;</span>fp<span style="color: black;">&#41;</span>;
        <span style="color: #0000ff;">return</span> <span style="color: #cc66cc;">0</span>;
<span style="color: black;">&#125;</span></pre></td></tr></table></code><hr />
</div>Dans l'exemple ici j'ai du faire quelques calcule pour tomber sur les chiffres en mode décimal pour correspondre aux chiffres hexadécimaux.<br />
Ce concernant je n'ai pas vraiment tout compris car j'ai du inverser les lettre  4C CD en C4 DC pour effectuer mon calcul final<br />
<br />
C*16^0  +   4*16^1  +    D*16^2  +   C*16^3  = 4CCD (C'est ce que je n'ai pas compris car c'est inversé par paire)<br />
12+64+3328+49152=52556<br />
<br />
21h = 33<br />
<br />
Si vous pouvez m'explique la raison pour laquelle j'ai du inverser les lettres pour le calcul de 4CCD?<br />
<br />
Aussi pourquoi fwrite() place 00 à la fin de mon fichier COM? Est-ce impossible d'omettre ce '00'? <br />
<br />
Cependant le fichier COM final s'execute correctement.</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f897/c-cpp/c/debuter/">Débuter</category>
			<dc:creator>Kitsune64</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2179038/c-cpp/c/debuter/c-creation-fichier-16-bits-com-sous-dos-question-hexadecimal/</guid>
		</item>
	</channel>
</rss>
