Saisie d'une chaine de caracteres en C

Fermé
netik Messages postés 3 Date d'inscription mardi 13 juillet 2010 Statut Membre Dernière intervention 10 janvier 2012 - Modifié par netik le 10/01/2012 à 17:42
Hxyp Messages postés 401 Date d'inscription vendredi 28 janvier 2011 Statut Membre Dernière intervention 27 avril 2014 - 12 janv. 2012 à 17:21
Bonjour,

Je suis vraiment bloqué sur un problème concernant la saisie des chaines de caracteres. Mon programme est censé insérer le mot saisi dans un fichier mots.txt en le positionnant à la bonne place par tri dans l'ordre alphabétique.


Alors voilà, j'ai fait ceci, mais avec des scanf, et cela ne le permet pas de saisir des mots composés :(.

int saisieNouveauMot(char tabMots[][30], int tailleLogique)
{
int i=0, j, res;
char mot2[31];

printf("Tapez le mot a inserer : ");
scanf("%s",mot2);
printf("\n");

while (i<tailleLogique)
{
res = strcmp(mot2,tabMots[i]);

if (res < 0)
{
for (j=tailleLogique+1 ; j>i ; j--)
{
strcpy(tabMots[j],tabMots[j-1]);
}
strcpy(tabMots[i],mot2);
return tailleLogique+1;
}

else if (res == 0)
{
printf("Le mot %s est deja insere\n",mot2);
return tailleLogique;
}
i++;
}

// i = tailleLogique
res = strcmp(mot2, tabMots[i]);
if (res > 0)
{
strcpy(tabMots[i],mot2);
return tailleLogique+1;
}
}

A voir également:

1 réponse

Hxyp Messages postés 401 Date d'inscription vendredi 28 janvier 2011 Statut Membre Dernière intervention 27 avril 2014 54
12 janv. 2012 à 17:21
Bonjour, pouvez faire la fonction vous même en utilisant getchar() ou scanf, fread..
ou utiliser fgets :
char s[12];
fgets(s,12,stdin);
printf("%s\n",s);
http://www.cplusplus.com/reference/cstdio/fgets/
fgets prend en compte le caractère NULL '\0' qu'il ajoute à la fin de la chaine dans le paramètre int num,
exemple "hello world" fait 11 char mais il faut utiliser un tableau de 12 char pour ne pas avoir de dépassement (segfault) en utilisant fgets. c'est juste un détail..
0