Problème affichage texte en c

Fermé
ainhoa_ok Messages postés 1 Date d'inscription lundi 11 mai 2020 Statut Membre Dernière intervention 12 mai 2020 - Modifié le 12 mai 2020 à 00:08
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 - 12 mai 2020 à 10:28
Bonjour/bonsoir, je suis débutante en C. Voici mon problème: je souhaite afficher chaque caractère de la phrase "je suis la" stocké dans un tableau. Le probleme c'est qu'il m affiche d'autre caractère. J'affiche cette chaine dans une fonction( elle se nomme cesar dans mon code) Voici une capture d'écran de ma console:


J'ai constaté que j'ai ce probleme pour toute les chaines ayant une longeur de 10 caractères.

Voici mon code:


#include <stdio.h>
#include <wchar.h>
#include <locale.h>
#include <string.h>
#include <stdlib.h>
int convertiraccent(wchar_t test, char* pteste,int i){
if(test==L'é' || test==L'è' || test==L'ê' || test==L'ë'){
pteste[i]='e';}

else if(test==L'à' || test==L'á' || test==L'â' || test==L'ã'|| test==L'ä' || test==L'å'){
pteste[i]='a';}

else if(test==L'ì' || test==L'í' || test==L'î' || test==L'ï'){
pteste[i]=i;}

else if(test==L'ò' || test==L'ó' || test==L'ô' || test==L'õ' || test==L'õ' || test==L'ö'){
pteste[i]='o';}

else if(test==L'ú' || test==L'û' || test==L'ù' || test==L'õ' || test==L'ü'){
pteste[i]='u';}
else{
return 1;}
}
int nonautoriser(wchar_t test){
wchar_t tab_interdit[]={L'×',L'Ø',L'Þ',L'ß',L'æ',L'Æ',L'þ',L'ð',L'+'};
for(int i=0;i<wcslen(tab_interdit);i++){
if(test==tab_interdit[i]){
return 0;
}
}
}

void verifieralphanumerique(wchar_t* saisi,char* pteste){
wchar_t tab_alphabet[]={L"abcdefghijklmnopqrstuvwxyz"};
wchar_t test;
for(int i=0;i<wcslen(saisi);i++){

test=saisi[i];
if(nonautoriser(test)!=0){
convertiraccent(test, pteste,i);
if(convertiraccent(test, pteste,i)==1){
pteste[i]=test;
}

}

}


}

void cesar(char* teste_message){
int i=0;
while(i<strlen(teste_message) && teste_message[i]!='\n'){
printf("le contenu du tableau est %c \n\n",teste_message[i]);
i++;
}
}

int main(void)
{
struct lconv *loc;
setlocale (LC_ALL, "");
loc=localeconv();

wchar_t message[200];
char message_converti[200];

fgetws(message, 200, stdin);

verifieralphanumerique(message,message_converti);
int i=0;

cesar(message_converti);


}





J'espère que mon code est lisible. Je vous remercie pour votre aide. Normalement l'indentation n'est pas comme cela je vous pris de m'excuser.
Configuration: Linux / Firefox 76.0

1 réponse

yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
12 mai 2020 à 10:28
bonjour, je pense que tu peux préserver l'indentation si tu précises "C" quand tu utilises les balises de code: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

je suggère que tu fasses des printf des strlen de tes chaines, cela t'aidera sans doute à comprendre ce qui se passe.
0