DEV C++ I LOVE U !!!!!!!!!!!!! - Programmation
Marsh Posté le 30-09-2001 à 23:14:34
avec dev C++ :
%%
%
alors qu avec borland :
%%
%%
bref, je vais laisser tomber Dev C++.....
[edtdd]--Message édité par slvn--[/edtdd]
Marsh Posté le 30-09-2001 à 23:18:14
C grave ? Je l'ai Dev c++ , je me pose po de kestions ... Ca fait qu'il est pourri ? ou au contraire ?
Marsh Posté le 30-09-2001 à 23:24:49
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!
Marsh Posté le 30-09-2001 à 23:56:07
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
Marsh Posté le 01-10-2001 à 01:47:14
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]
Marsh Posté le 01-10-2001 à 01:53:51
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 |
Pour le % dans la chaine de formatage il suffit d' en ecrire deux. C'est la norm qui dit ca.
A+,
A+,
Marsh Posté le 01-10-2001 à 08:47:38
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.
Marsh Posté le 01-10-2001 à 09:21:52
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 ...
Marsh Posté le 01-10-2001 à 10:51:36
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 ! ! !
Marsh Posté le 01-10-2001 à 12:46:09
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]
Marsh Posté le 01-10-2001 à 15:47:03
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 ! ! !
Marsh Posté le 02-10-2001 à 01:44:32
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+,
Marsh Posté le 15-01-2002 à 15:41:21
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 )
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 !!
Marsh Posté le 15-01-2002 à 15:43:44
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 )
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 !!
Marsh Posté le 15-01-2002 à 15:50:08
é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
[edtdd]--Message édité par El_Gringo--[/edtdd]
Marsh Posté le 15-01-2002 à 16:13:14
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 |
MERCCHHHIII !!!!!!!!
Marsh Posté le 30-09-2001 à 22:25:22
#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 )