Rechercher : dans
Par :

C comparaison caracteres

Dernière réponse le 11 déc 2006 à 17:25:05 frizou11, le 4 oct 2005 à 18:59:45 
 Signaler ce message aux modérateurs

Salut tout le monde
bon je bloque sur un truc tout bete:
je suis en langage C et je cherche a comparer 2 caractere
donc j'ai deux chaines de caracteres temp et longueur
longueur est vide et temp comtient un truc du genre "240 60"
et dans longueur je souhaite recopier jsute "240"
alors voici mon code (enfin un morceau) :

int i=0;
while(strcmp(temp[i], " ") != 0)
{
strcpy(longueur[i], temp[i]);
i++;
}

et avec ca j'obtiens une "fault segmentation" aieee.........
aidez moi svp !!!

Meilleures réponses pour « C comparaison caracteres » dans :
Les chaînes de caractères en C++ Voir Qu'est-ce qu'une chaîne de caractères ? Une chaîne de caractères (appelée string en anglais) est une suite de caractères, c'est-à-dire un ensemble de symboles faisant partie du jeu de caractères, défini par le code ASCII. En langage C++, une...
On peut utiliser comme on veut les polices de caractères VoirMythe On peut utiliser comme on veut les polices de caractères (TrueType, TTF...) Réalité FAUX. Explications Non, vous ne pouvez pas. Comme tout travail d'artiste, l'auteur d'une police de caractères doit être rémunéré pour son travail. C'est...
[Programmation] Polices de caractères pour programmeur VoirCourrier: Un mauvais choix La plupart des programmeurs utilisent la police de caractères Courrier pour travailler. C'est un mauvais choix, car cette police est peu lisible. En taille 9, il est impossible de distinguer 0 (zéro) de O (lettre...
Langage C - Les chaînes de caractères VoirQu'est-ce qu'une chaîne de caractères ? Une chaîne de caractères (appelée string en anglais) est une suite de caractères, c'est-à-dire un ensemble de symboles faisant partie du jeu de caractères, défini par le code ASCII. En langage C, une chaîne...
Langage C - Les opérateurs VoirQu'est-ce qu'un opérateur ? Les opérateurs sont des symboles qui permettent de manipuler des variables, c'est-à-dire effectuer des opérations, les évaluer, etc. On distingue plusieurs types d'opérateurs : les opérateurs de calcul les opérateurs...
VBScript - Les fonctions de chaînes de caractères VoirLes fonctions de chaînes de caractères Fonction Description Filter(InputStrings, Value[, Include[, Compare]]) Sélectionne des chaînes de caractères parmi un tableau de chaînes...

1

kmanber, le 4 oct 2005 à 19:37:35
  • +1

Tu as attribué une valeur à longueur avant de modifier ?
tu as déclaré une longueur de chaine suffisament importante pour longueur ?

Répondre à kmanber

2

arth, le 4 oct 2005 à 19:57:27

A mon avis change

strcpy(longueur[i], temp[i]);

par

longueur[i]=temp[i];

je pense que comme tu compares deux caractères le strcpy ne sert à rien

Répondre à arth

3

darkhorkeu, le 22 oct 2005 à 19:59:43

Strcmp doit prendre 2 chaines en paramètres, or le premier param que tu as mis est un caractere, et non une chaine.
En ce qui concerne le strcpy, arth a raison.

Au final, ça devrait ressembler à quelque chose comme ça :

int i=0;
int t;
t = strlen(temp);
for(i=0 ;  ( i < t) && (temp[i] != ' ') , i++ )
{
  longueur[i] = temp[i];
}
longueur[i] = '\0'; // caractere de fin de chaine


Dans ce cas, je suppose que ton tableau de caractère longueur était déjà alloué (et que tu as prévu suffisament de caractères).

Darkhorkeu

Répondre à darkhorkeu

4

Pof, le 21 nov 2005 à 11:52:26

Salut
je viens de tomber sur ce sujet et moi je voulais savoir un truc:
si je veux supprimer un caractere d'une chaine, sans utiliser de fonctions particulieres....comment faire???
ex:
chaine1 = bonjour;
supprimer 'j';
chaine1 = bonour;

je sais rechercher le caractere mais je ne sais pas comment supprimer le caractere et modifier la chaine!

merci!

Pof

Répondre à Pof

5

frizou11, le 21 nov 2005 à 14:25:10

SAlut

deja de savoir retrouver la lettre a supprimé est la 1ere etape, mais il ne faut pas oublier de sauvegarder la position de ta lettre a supprimer dans le mot (dans ton exemple la position sera 3)
ensuite tu parcours ton mot en ne touchant a rien juqu'a ta position -1
puis a partir de position jusqu'a la longueur de ton mot -1 (car ton mot est reduit d'une lettre) tu affectes la lettre suivante
dans ce genre

mot[i] = mot[i+1]

et qd tu es a la fin et que t'as affecté ta derniere lettre, tu dis que ton mot est terminé :
mot[longueur] = '\0'

voila,
c pas super boen expliqué mais la solution est la...

Répondre à frizou11

6

super blaireau, le 21 nov 2005 à 15:52:27

Je sui sur un exo du meme genre que toi.
je te laisse mon prog, normalmen il fonctionne:

char chaine1 [30]; // déclaration de la premiere chaine
int L; // declaration de la variable de comptage

cout<<"entrez un premier texte : ";
gets(chaine1); // sasie de la chaine

for (L=0;chaine1 [L]!='\0';L++); // comptage des caracteres
{
cout<<"Votre texte comporte "<<L<<" caracteres\n\n";
}



char chaine2[30]; // déclaration d'une deuxieme chaine
int C; //déclaration d'une variable de comparaison

cout<<"entrez second texte : ";
gets(chaine2); // sasie de la chaine2

for(C=0;C==L;C++);
{
if(chaine1[C]==chaine2[C])
{
cout<<"les textes sont identiques\n\n";
}
else
{
cout<<"les textes ne sont pas identiques\n\n";

Répondre à super blaireau

7

 Forest, le 11 déc 2006 à 17:25:05

Salut tout le monde,
j'ai eu le même probleme, moi j'ai tester le premier paramettre temp[i], s'il est NULL ça donne "fault segmentation" , et ça marche bien,

j'espere que e ça va t'aider.

Répondre à Forest