Saisie d'une chaine de caracteres en C

netik Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -  
Hxyp Messages postés 401 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Membre Dernière intervention   54
 
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