Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1690 connectés 

  FORUM HardWare.fr
  Programmation

  DEV C++ I LOVE U !!!!!!!!!!!!!

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

DEV C++ I LOVE U !!!!!!!!!!!!!

n°62294
slvn
Posté le 30-09-2001 à 22:25:22  profilanswer
 

#include "stdio.h"
void main()
{
char*str;
str="%%";
printf("%s\n",str);
printf(str);
}
 
!!!!!!!!!( a tester avec str="%aa%aaaaaa" ca donne de trucs marrant aussi :) )

mood
Publicité
Posté le 30-09-2001 à 22:25:22  profilanswer
 

n°62298
Maxaks
Posté le 30-09-2001 à 23:05:41  profilanswer
 

Ca fait koa ?

n°62301
slvn
Posté le 30-09-2001 à 23:14:34  profilanswer
 

avec dev C++ :
%%
%  
 
alors qu avec borland :
%%
%%
 
bref, je vais laisser tomber Dev C++.....

 

[edtdd]--Message édité par slvn--[/edtdd]

n°62303
Maxaks
Posté le 30-09-2001 à 23:18:14  profilanswer
 

C grave ? Je l'ai Dev c++ , je me pose po de kestions ... Ca fait qu'il est pourri ? ou au contraire ?

n°62307
slvn
Posté le 30-09-2001 à 23:24:49  profilanswer
 

bah en tout cas il fait pas pareil que Borland !
 
et ce le coup du printf(str) != printf("%s",str), c ets carment bizarre car ca fait deux choses differentes pour le meme entendement!

n°62309
verdoux
And I'm still waiting
Posté le 30-09-2001 à 23:30:39  profilanswer
 

Et c'est quoi le bon comportement ?

n°62313
barbarella
Posté le 30-09-2001 à 23:56:07  profilanswer
 

slt les nenfants,
 
il me semble que pour des fonc comme printf qui font/peuvent faire du formatage de chaine certains caractères sont délicat a manipuler. le % en fait partie comme le "
 
pour les résoudre il suffit d'utilser \ devant le caractère rebel :D

n°62325
gilou
Modérateur
Modzilla
Posté le 01-10-2001 à 01:47:14  profilanswer
 

Deja comme ton code me semble errone, il est difficile d' en tirer une conclusion. Si tu allouais correctement str, on aurait peut etre une meilleure idee de ce qui se passe, mais la, le comportement est aleatoire a priori (neanmoins, il y a de tres forte chances que tout se passe bien dans ce cas precis, mais ca a des chances de causer pb dans d' autres cas ("%aa%aaaaaa"?)):
 
#include "stdio.h"  
void main()  
{  
char*str="%%"; /* ici l' allocation sera correcte */
printf("%s\n",str);  
printf(str);
printf ("\n" ); /* histoire de flusher le precedent */  
}  
printf(str); equivaut a printf("%%" ); ce qui ne doit generer qu' un seul % en sortie, les deux %% etant dans la chaine de format.
 
Pour ce qu' il devrait y avoir dans le premier cas, effectivement %%, puique les deux % ne sont pas dans la chaine de format, nais dans une chaine de parametre.
Si Borland continue a sortir %% pour le second cas, c' est lui qui est en erreur.
A+,

 

[edtdd]--Message édité par gilou--[/edtdd]


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°62326
gilou
Modérateur
Modzilla
Posté le 01-10-2001 à 01:53:51  profilanswer
 

Barbarella a écrit a écrit :

slt les nenfants,
 
il me semble que pour des fonc comme printf qui font/peuvent faire du formatage de chaine certains caractères sont délicat a manipuler. le % en fait partie comme le "
 
pour les résoudre il suffit d'utilser \ devant le caractère rebel :D  




Pour le % dans la chaine de formatage il suffit d' en ecrire deux. C'est la norm qui dit ca.
A+,
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°62328
barbarella
Posté le 01-10-2001 à 08:47:38  profilanswer
 

oui, oui, gilou,
 
mais franchement le respect des normes de la part des compilateurs, devinne ce que j'en pense ;). Sinon oui tu as raison.

mood
Publicité
Posté le 01-10-2001 à 08:47:38  profilanswer
 

n°62330
altac
Posté le 01-10-2001 à 09:21:52  profilanswer
 

c'est meme dangereux de penser que printf(str) et identique a printf("%s", str) ! imagine que ton code affiche une chaine inconnue (entree par l'utilisateur par exemple) avec un printf(str) et que cette chaine contienne des "%" un peu n'importe comment ... tu risques d'avoir de bonne surprises ;)
essaye printf("%s" ) pour te donner une idee ...

n°62341
sayajin
Posté le 01-10-2001 à 10:51:36  profilanswer
 

Dans le même genre avec Dev-c++, il accepte ca :
 
int Bad[5,2];
 
par contre dés que tu rajoutes les options suivantes aux compilateurs "-ansi -pedantic-errors", il détecte que c'est une erreur non conforme au ANSI C++ ! Par contre certains disent que c'est pas vraiment une erreur, et considèrent que la première valeur 5 est à la libre utilisation du programmeur ! Quoi qu'il en soit Dev-c++ considère cette déclaration comme int Bad[2]; mais d'autres compilateur aurait émis une erreur, d'ailleur c'ets ce qui est dis dans le livre de Bjarne Stroustrup ! ! !

n°62367
gilou
Modérateur
Modzilla
Posté le 01-10-2001 à 12:46:09  profilanswer
 

Sayajin a écrit a écrit :

Dans le même genre avec Dev-c++, il accepte ca :
 
int Bad[5,2];
 
par contre dés que tu rajoutes les options suivantes aux compilateurs "-ansi -pedantic-errors", il détecte que c'est une erreur non conforme au ANSI C++ ! Par contre certains disent que c'est pas vraiment une erreur, et considèrent que la première valeur 5 est à la libre utilisation du programmeur ! Quoi qu'il en soit Dev-c++ considère cette déclaration comme int Bad[2]; mais d'autres compilateur aurait émis une erreur, d'ailleur c'ets ce qui est dis dans le livre de Bjarne Stroustrup ! ! !  




Ben oui, probablement valable a cause de la signification de la virgule dans un terme expression1 , expression2 qui comme chacun sait, evalue d' abord expression1, puis expression2, et retourne cette derniere valeur. (Et c'est aussi dans le standard du C-ansi)
donc dans int Bad[5,2];, il voit une expression a evaluer pour le tableau, il evalue le premier terme, 5, neglige (discard) cette valeur, il evalue le second terme, et garde sa valeur comme evaluation de 5,2, d' ou l'allocation d' un int [2];
Donc si ton code n' etait pas clairement du C++, mais en fait du C, il se peut qu' il ait ete compile comme du C, auquel cas, le comportement du compilo est correct.
A+,

 

[edtdd]--Message édité par gilou--[/edtdd]


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°62423
sayajin
Posté le 01-10-2001 à 15:47:03  profilanswer
 

On m'a déjà donné cette explication ! Mais les compilo borland et visual détecte tout de suite l'erreur, pour dev-c++ faut ajouter certaines options au compilateur ! ! !

n°62516
gilou
Modérateur
Modzilla
Posté le 02-10-2001 à 01:44:32  profilanswer
 

Sayajin a écrit a écrit :

On m'a déjà donné cette explication ! Mais les compilo borland et visual détecte tout de suite l'erreur, pour dev-c++ faut ajouter certaines options au compilateur ! ! !  




Certes, puisqu'a la base ce n'est pas necessairement une erreur, il est normal qu'il faille ajouter des options.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°89490
PompUsine
Leg9 ça suce bien !
Posté le 15-01-2002 à 15:41:21  profilanswer
 

Salut !! :)
Voilà je débute en C, et j'ai pris DEV C++ (Car Borland c'est bien beau mais c'est un peu désespérant, y'a trop d'options   :ouch: )
Donc voilà, j'ai une merde, je fait un petit machin, mais je n'arrive qu'à le lancer sous DOS, sous Windows (je suis sous NT là),il ne veut pas se lancer :(
Voilà c'est ça :  
 
/* Essai de programme Windows*/
#include <stdio.h>
 
main ()
 {
 printf : ("Ca veut pas s'afficher !!\n" );
   return 0;
   }
 
Voilà, est-ce que je doit faire une manipe spéciale pour qu'il s'affiche sous Windaube ??
Merci à vous les PROS !! :hello:


---------------
Leg9 : Pédé de service, pipes gratuites.
n°89493
PompUsine
Leg9 ça suce bien !
Posté le 15-01-2002 à 15:43:44  profilanswer
 

Salut à tous !! :)
Je débute en C, et je me suis installé DEV C++ (car Borland ils sont bien gentil mais c'est désespérant  :ouch: )
Donc je fait un petit prog tout naze pour essayer, mais il ne s'affiche que sous DOS, il veut pas marcher sous Windows (PS: je suis sous NT4 là )
 
Le voilà :  
 
/* Essai de programme Windows*/
#include <stdio.h>
 
main ()
 {
 printf : ("Ca veut pas s'afficher !!\n" );
   return 0;
   }
 
Quelqu'un sait-il comment faire pour quu'il sa'affiche sous Windows ce message ??
Une option a rajouter ou à cocher ??
Merci à vous les PROS !! :hello:


---------------
Leg9 : Pédé de service, pipes gratuites.
n°89496
El_gringo
Posté le 15-01-2002 à 15:50:08  profilanswer
 

écoute, pour programer sous windows, c assez différent de sous Dos, alors, vas sur google, tapes "tutoriels windows C++", et regardes. c impossible de t'expliquer correctement ici c trop complexe...
 
et, de rien l'apprenti :D

 

[edtdd]--Message édité par El_Gringo--[/edtdd]

n°89524
PompUsine
Leg9 ça suce bien !
Posté le 15-01-2002 à 16:13:14  profilanswer
 

El_Gringo a écrit a écrit :

écoute, pour programer sous windows, c assez différent de sous Dos, alors, vas sur google, tapes "tutoriels windows C++", et regardes. c impossible de t'expliquer correctement ici c trop complexe...
 
et, de rien l'apprenti :D  
 
 




MERCCHHHIII !!!!!!!! :D


---------------
Leg9 : Pédé de service, pipes gratuites.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  DEV C++ I LOVE U !!!!!!!!!!!!!

 

Sujets relatifs
Décu par Bloodshed Dev-c++[C++] avec Dev-C++
[C/C++ et compilateur] Au sujet de Dev-C++question en C++ sous Dev-C++ avec Windows Millenium
Plus de sujets relatifs à : DEV C++ I LOVE U !!!!!!!!!!!!!


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR