est il possible sans utiliser de tableaux?Citation:
Envoyé par seriousme
Version imprimable
est il possible sans utiliser de tableaux?Citation:
Envoyé par seriousme
Une chaine de caractères est un tableau...Citation:
Envoyé par salif98
tres bien les gars !
je suis parvenu à ce que je voulais. bon nombre d'entre vous ne saisissait pas en fait ce que je voulais mais c'est pas grave, j'ai beaucoup de part vos message.
mon probleme etait d'ecrire un code simple, quand je dis simple c'est par rapport au niveau auquel je me situe,le code devais lire le nombre de caractere saisie dans une ligne que l'utilisateur devait entrer, mais je comme je disais dans le mail adressé à Seriousm, je ne sais pas encore grand chose sur les tableaux raison pour laquelle j'insistais sur le fait de la possibilité de le faire sans tableau ( et là j'ai appris aussi qu'une chaine de caracteres est un tableau,merci). J'ai beaucoup reflechi durant le week end et là j'y suis arrivé ! enfin presque, voici le code que j'ai pu ecrire:
#include<stdio.h>
int main()
{
char caractere;
int nombre = 0;
while(caractere != '\n')
{ scanf("%c",&caractere);
nombre ++;
if(caractere == '\n')
printf("%d",nombre-1); /* en affichant 'nombre' tout court j'obtiens le nombre de caracteres saisi sur la ligne augmenté de 1, sans doute parce j'utilise windows car "entré" sur windows correspond enfait à de deux touches sur windows:'\r' et '\n'; \r etant le retour de chariot, je ne dois pas le compter, alors j'affiche "nombre-1" */
}
return 0;
}
Si quelqu'un a une meilleur explication à cette augmentation de 1 sur le nombre reel de caractere saisi, please, faite le moi savoir.
Merci à vous tous !
#include <string.h>
int taille=0;
char mot[100];
Citation:
printf("Saissiez votre phrase ou mot"\n);
gets(mot); /* meme chose que scanf mais plus court */
taille = strlen(mot);
printf("Votre phrase %s contient %ld caractere", mot, taille);
Ah pas mal celle la surtout le commentaire qui va avec.Citation:
Envoyé par orj30754
Dis tu programmes pour le plaisir...
Il ne faut absolument pas utiliser gets, cette fonction provoque de grave trous de securite dans les programmes. En effet elle ne verifie pas la taille de la chaine saisie, ce qui peut entrainer des buffer overflow.
Effectivement, si ce n'était si particulier au C, celà mériterait le bêtisier pour cet humour involontaire :lol:Citation:
printf("Saissiez votre phrase ou mot"\n);
gets(mot); /* meme chose que scanf mais plus court */
A toi de spécifié un char assez grand mais pour les petit programme ca va bien.
C'est tous ce que j'ai a dire........................................
Citation:
printf("\n1 - Entrer le chemin et le nom de la tache a analyser\n");
printf("%s\n", chemin);
gets(chemin);
if(remplace_chaine_tous(chemin, "\\", "\\\\") != TRUE) return(FALSE);
do
{
printf("\n2 - Entrer la plateforme désirée UNIX ou WIN32\n");
gets(plateforme);
}
while((strcmp(plateforme, "UNIX") && strcmp(plateforme, "WIN32")) != 0);
if ((strcmp(plateforme, "UNIX")) == 0)
printf("\n Vous avez choisi la plateforme UNIX\n");
else
printf("\n Vous avez choisi la plateforme WIN32\n");
printf("\n3 - Entrer le chemin destination\n");
gets(chemin_dest);
printf("\n4 - Veuillez saisir le nom du fichier final >> EX: listing_fichier:\n");
gets(fichier_resultat);
mkdir(chemin_dest);
recup_nom_fichier(chemin, temp);
sprintf(nom_fichier, "%s.dsp", temp); /* nom_fichier = consolidation.dsp */
strcpy(temp, "");
strcpy(tab[i], "");
Escusez moi les gars :mouarf: :mouarf: :mouarf:
C'est quoi le but ?
On (les forumeurs et surtout la norme) te dit qu'il ne faut plus utiliser gets (conservée uniquement pour des raisons de compatibilité). A quoi ton code sert-il (sans parler du fait qu'il ne compile même pas).
Merci d'éviter de semer le doute dans les esprits des débutants qui viennent sur ce forum en quête de réponses sûres.
Un char ça fait 1. Tu veux dire une tableau de char ?Citation:
Envoyé par orj30754
Quel rapport avec le taille du programme ?
Sache qu'il n'existe pas de moyen d'utiliser gets() de façon sûre. C'est un trou de sécurité bien connu qu'il convient de ne pas utiliser.