Strcmp
Résolu
crazyghandi
Messages postés
312
Date d'inscription
Statut
Membre
Dernière intervention
-
crazyghandi Messages postés 312 Date d'inscription Statut Membre Dernière intervention -
crazyghandi Messages postés 312 Date d'inscription Statut Membre Dernière intervention -
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
6 réponses
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 pres
ça donne ça a peu pres
for(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
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
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; }