Strcmp
Résolu
crazyghandi
Messages postés
323
Statut
Membre
-
crazyghandi Messages postés 323 Statut Membre -
crazyghandi Messages postés 323 Statut Membre -
Bonjour,
je voudrais comparer deux chaines de caracteres caractere par caractere.
par exemple si je compare 'abcd' et 'abnd' il fodrai ke je sache ke c la troisieme lettre ki e differente
merci de m'aider rapidement
je voudrais comparer deux chaines de caracteres caractere par caractere.
par exemple si je compare 'abcd' et 'abnd' il fodrai ke je sache ke c la troisieme lettre ki e differente
merci de m'aider rapidement
Configuration: Windows Vista Opera 9.26
6 réponses
-
en quel language ?
-
-
ben tu fais une boucle pour parcourir tes deux chaines et tu compare chaque caracteres s'il ne sont pas les meme tu dis a quel position il ne sont pas les meme grace a l'indice
ça donne ça a peu presfor(i=0;i<taille;i++) if(chaine1[i]!=chaine2[i]) printf("le caractere %d n'est pas le meme dans les deux chaines\n",i+1); -
ok l'idee est bonne mais c pas exactement ca
voila le code :
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#define TAILLE 3
int main(int argc,char*argv[])
{
int i=0;
int j=0;
printf("Parametres d'entree : ");
printf("argc =%d\n\n",argc);
for (i=0;i<argc;i++)
{
printf("argv[%d]=%s\n",i,argv[i]);
}
printf("\n");
//recuperation du puzzle de depart//
char matrix1[TAILLE][TAILLE];
for (i=0;i<3;i++)
{
for (j=0;j<3;j++)
{
matrix1[i][j]=argv[1][i*TAILLE+j];
}
}
//affichage du puzzle de depart//
printf("Puzzle de depart : \n\n");
for(i=0; i<3; i++)
{
for(j=0; j<3; j++)
{
printf("%c ", matrix1[i][j]);
}
printf("\n");
}
//recuperation du puzzle d'arrivee//
char matrix2[TAILLE][TAILLE];
for (i=0;i<3;i++)
{
for (j=0;j<3;j++)
{
matrix2[i][j]=argv[2][i*TAILLE+j];
}
}
//affichage du puzzle d'arrivee//
printf("Puzzle d'arrivee : \n\n");
for(i=0; i<3; i++)
{
for(j=0; j<3; j++)
{
printf("%c ", matrix2[i][j]);
}
printf("\n");
}
printf("\n\n");
//comparaison des deux matrices//
for(i=0;i<3;i++)
{
for(j=0; j<3; j++)
{
if(matrix1[i][j]!=matrix2[i][j] && matrix1[i][j]!=' ')
printf("le caractere %d chaines\n",i*TAILLE+j);
}
}
printf("fin\n");
return 0;
}
on demarre avec mc []prog.exe "abcdefgh " "abcde fgh"
donc forcement il ya une erreur de position mais moi je voudrais kil reconnaisse une erreur du type :
mc []prog.exe "abcdefgh " "abcdM fgh" ou le "e" et le "M" ne sont pas pareils -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
ok je vois ce que tu veux faire...
ce que tu peux faire c'est utiliser une matrice temporaire dans laquelle tu fais une concatenation des deux chaine et tu compare la matrice 1 avec la matrice temporaire
ça donne ça#include <stdlib.h> #include <stdio.h> #include <string.h> #define TAILLE 3 int main(int argc,char*argv[]) { int i=0; int j=0; printf("Parametres d'entree : "); printf("argc =%d\n\n",argc); for (i=0;i<argc;i++) { printf("argv[%d]=%s\n",i,argv[i]); } printf("\n"); //recuperation du puzzle de depart// char matrix1[TAILLE][TAILLE]; for (i=0;i<3;i++) { for (j=0;j<3;j++) { matrix1[i][j]=argv[1][i*TAILLE+j]; } } //affichage du puzzle de depart// printf("Puzzle de depart : \n\n"); for(i=0; i<3; i++) { for(j=0; j<3; j++) { printf("%c ", matrix1[i][j]); } printf("\n"); } //recuperation du puzzle d'arrivee// char matrix2[TAILLE][TAILLE]; for (i=0;i<3;i++) { for (j=0;j<3;j++) { matrix2[i][j]=argv[2][i*TAILLE+j]; } } //affichage du puzzle d'arrivee// printf("Puzzle d'arrivee : \n\n"); for(i=0; i<3; i++) { for(j=0; j<3; j++) { printf("%c ", matrix2[i][j]); } printf("\n"); } printf("\n\n"); char temp[TAILLE][TAILLE]; strcpy(*temp,argv[2]); strcat(*temp,argv[3]); //comparaison des deux matrices// for(i=0;i<3;i++) { for(j=0; j<3; j++) { if(matrix1[i][j]!=temp[i][j]) printf("le caractere %d chaines\n",(i*TAILLE+j)+1); } } printf("fin\n"); return 0; } -
au final la meilleure solution est une comparaison caractere par caractere
a ce moment la le strcmp ne marche pas on compare directement avec la valeur ascii de l'espace (32) :
if (matrix1[k+1][l]==SP && k+1<3)
{
m=1;
direction='b';
}
avec SP=32