Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[Conseils d'utilisation] fr.comp.lang.c

5 réponses
Avatar
L'equipe fr-chartes
Archive-Name: fr/chartes/comp.lang.c

Auteur: Sylvain Nierveze

-----------------------------------------------------------------------
L'auteur de ces conseils d'utilisation ne désire plus les maintenir et
les rend donc à la communauté. Vous pouvez reprendre le flambeau en
contactant l'équipe de modération de fr.usenet.reponses à l'adresse
fur (chez) fr-chartes (point) org.
-----------------------------------------------------------------------

=====================================================
= Conseils d'utilisation du groupe fr.comp.lang.c =
=====================================================

---------------------------------------------------------
Nom : fr.comp.lang.c
Statut : non modéré
Description : Langages de programmation C et assimiles
Date de création : 16/12/96
---------------------------------------------------------

1 - Charte du groupe :
----------------------

Ce groupe est dédié aux discussions autour du langage C.

En particulier, il est recommandé que les discussions
sur les différentes API, librairies et environnements de
compilation des éditeurs de compilateurs pour MS-Windows
se déroulent dans fr.comp.ms-windows.programmation.

De même, le langage C++ a maintenant son groupe à lui : fr.comp.lang.c++ .

On trouvera par exemple dans fr.comp.lang.c :
* des échanges de point de vue, de techniques de programmation, des
sources, des commentaires.

* des questions précises résolues éventuellement par les usagers du
groupe. Questions issues soit de personnes compétentes visant à
résoudre des problèmes très pointus, mais aussi des questions de
débutants visant à améliorer ou approfondir leurs connaissances.

* des informations générales sur les langages de programmation (adresses
de sites, critique de produits commerciaux).

* des initiations aux différents langages assurées par des experts de
bonne volonté.

Il est préférable, s'il est nécessaire d'échanger des fichiers source
de plus d'une centaine de lignes, d'indiquer une référence sur
un site Web ou FTP ou récupérer le fichier en question.

2 - Erreurs fréquemment commises :
----------------------------------

Depuis mi-avril 97, le groupe fr.comp.lang.c++ accueille les
discussions autour du langage C++. fr.comp.lang.c ne doit
plus être utilisé pour cela.

2 - Conclusion :
----------------

Pour obtenir plus de renseignements sur les "Conseils d'utilisation",
vous pouvez vous reporter au message intitulé "A propos des Conseils
d'utilisation" posté dans fr.usenet.reponses et fr.bienvenue.
Pour toutes autres informations et/ou pour débuter sur Usenet, vous
devriez consulter ces deux groupes et visiter le site web qui a été
mis en place à http://usenet-fr.news.eu.org/fr-chartes/ .

Nous espérons que ces informations et conseils contribueront à
la qualité des échanges dans les forums de discussion, dans
l'intérêt et pour le plaisir de tous les lecteurs et auteurs.


--

La présente publication des documents de fr.usenet.reponses fait suite à
la panne du robot MaintFAQ. Ce document n'a pas été mis à jour depuis.
Si vous souhaitez maintenir ce document, contactez-moi à jogo@matabio.net.

5 réponses

Avatar
bpascal123
Bjr ou bsr,

Une personne dans cette discussion a conseillé de ne pas ajouter 'n'
à la fin de printf pour une raison que j'ai lue mais je ne plus à quel
endroit dans cette discussion (certaines réponses sont très longues et
pour la plupart des échanges, je suis dépassé).

Ne pas ajouter 'n' à la fin de printf ne m'a pas interpellé
directement. Je pense avoir compris pourquoi, en cherchant pourquoi un
tableau à 2 dimensions affiche la première ligne avec un décalage d'u n
espace :

exemple.1:
...
printf("nnAffichage : n") ; /* pour 'n' à cet endroit
l'affichage de la première ligne est décallé */

for ( i = 0 ; i < LigA ; i++ )
{
for ( j = 0 ; j < ColA ; j++ )
printf(" %d ", MatA[i][j] ) ;
printf("n") ;
}
...

Exemple2 :
printf("nnAffichage : ") ;
printf("n") ; /* à cet endroit 'n',
l'affichage ligne et colonne n'est pas décallé */

for ( i = 0 ; i < LigA ; i++ )
{
for ( j = 0 ; j < ColA ; j++ )
printf(" %d ", MatA[i][j] ) ;
printf("n") ;
}

Sous environnement windows, il n'y a pas de différence entre l'exemple
1 et 2, pourquoi ?

Sous linux gcc, je suis contraint de faire appel au code de l'exemple
2 qui heureusement fonctionne avec windows.
Je voudrais comprendre pourquoi 'n' à la fin de printf et 'n' dans
une instruction spécifique ne sont pas équivalents.

Je commence un peu avec le langage assembleur pour avoir quelques
notions.
Est-ce qu'en assembleur on peut voir l'exemple ci-dessus et comprendre
pourquoi visuellement ?

Merci
Pascal
Avatar
Samuel Devulder
a écrit :
Bjr ou bsr,

Une personne dans cette discussion a conseillé de ne pas ajouter 'n'
à la fin de printf pour une raison que j'ai lue mais je ne plus à quel
endroit dans cette discussion (certaines réponses sont très longues et
pour la plupart des échanges, je suis dépassé).



Il faut dire qu'il y en a qui préférent couper les cheveux en 4 ici que
répondre simplement au problème de l'OP ;-)

Sous environnement windows, il n'y a pas de différence entre l'exemple
1 et 2, pourquoi ?



Sous linux gcc, je suis contraint de faire appel au code de l'exemple
2 qui heureusement fonctionne avec windows.
Je voudrais comprendre pourquoi 'n' à la fin de printf et 'n' dans
une instruction spécifique ne sont pas équivalents.



En fait quel que soit l'environnement il ne devrait y avoir aucune
différences entre afficher "chainen" ou "chaine" puis "n".

As tu essayé
fprintf(stdout, "chainen"); fflush(stdout);
histoire de forcer le vidage des tampons? Mais bon ca n'explique pas
pourquoi printf() oublirait le "n" final. C'est pas normal cet oubli de
la part du printf(). Il doit y avoir autre chose dans le contexte qui
explique cela, mais je ne vois pas. On manque de détails.

Je commence un peu avec le langage assembleur pour avoir quelques
notions.
Est-ce qu'en assembleur on peut voir l'exemple ci-dessus et comprendre
pourquoi visuellement ?



Ben non. Si difference il y a, elle est dans l'implémentation du printf,
et pas dans l'asm de ton code. Fondamentalement l'asm d'un code C
signifie la même chose que le code C lui même. Le compilo n'ajoute rien
de plus à la sémantique du prog en le traduisant en langage machine. Un
code bon en C reste bon en ASM, idem s'il est mauvais en C il est
mauvais en ASM. Aucune différence ou subtilité à ce niveau.

sam.
Avatar
-ed-
On 14 nov, 13:53, ""
wrote:
Bjr ou bsr,

Une personne dans cette discussion a conseillé de ne pas ajouter 'n'
à la fin de printf pour une raison que j'ai lue mais je ne plus à que l



Quelle discussion ? Es-tu conscient que tu as posté dans le fil
'charte' ?

L'equipe fr-chartes
Afficher le profil
Autres options 2 nov, 09:01
Groupes de discussion : fr.comp.lang.c
De : "L'equipe fr-chartes"
Date : Mon, 02 Nov 2009 09:01:10 +0100
Date/heure locale : Lun 2 nov 2009 09:01
Objet : [Conseils d'utilisation] fr.comp.lang.c
Répondre | Répondre à l'auteur | Transférer | Imprimer | Message individuel | Afficher l'original | Signaler ce message | Rechercher les mes sages de cet auteur
Archive-Name: fr/chartes/comp.lang.c

Auteur: Sylvain Nierveze


etc.

(Ou alors est-ce une diablerie de Google qui a accroché ton post au
mauvais endroit ?)
Avatar
bpascal123
> Quelle discussion ? Es-tu conscient que tu as posté dans le fil
'charte' ?



 (Ou alors est-ce une diablerie de Google qui a accroché ton post au
mauvais endroit ?)



Il y avait un message sur la charte de ce groupe (qui cherche des
personnes pour reprendre le flambeau - avec mon niveau en
programmation, la flamme me brûlerait les mains :) ), bref, j'ai fait
répondre à ce post mais c'est allé dans un nouveau fil de discussion
de la charte. Je n'ai pas compris.

Pascal
Avatar
Lucas Levrel
Le 14 novembre 2009, Samuel Devulder a écrit :

a écrit :
> Sous environnement windows, il n'y a pas de différence entre l'exemple
> 1 et 2, pourquoi ?

> Sous linux gcc, je suis contraint de faire appel au code de l'exemple
> 2 qui heureusement fonctionne avec windows.



Mais bon ca n'explique pas pourquoi
printf() oublirait le "n" final. C'est pas normal cet oubli de la part du
printf(). Il doit y avoir autre chose dans le contexte qui explique cela, mais
je ne vois pas. On manque de détails.



Autrement dit, Pascal : fais un exemple complet (= qui compile) qui montre
le problème. Chez moi ceci ne produit aucun décalage :
---
#include <stdio.h>
int main(void){
int i,j;
printf("nnAffichage : n") ;
for ( i = 0 ; i < 3 ; i++ ){
for ( j = 0 ; j < 3 ; j++ ) printf(" %i ", i*j ) ;
printf("n") ;
}
return 0;
}
---
Compilé avec gcc toto.c, ./a.out donne :
---


Affichage :
0 0 0
0 1 2
0 2 4
---


--
LL