Maison développement back-end Tutoriel C#.Net Comment comparer des chaînes en langage C

Comment comparer des chaînes en langage C

May 08, 2021 pm 03:05 PM
C Comparaison des cordes

Méthodes de comparaison : 1. bcmp(), compare les n premiers octets d'une chaîne pour voir s'ils sont égaux ; 2. strcmp(), compare les chaînes en respectant la casse ; 3. strcmp(), pas la taille ; -sensible Chaîne de comparaison écrite ; 4. strncmp() ou strnicmp(), comparaison sensible à la casse des n premiers caractères de la chaîne.

Comment comparer des chaînes en langage C

L'environnement d'exploitation de ce tutoriel : système Windows 7, version c99, ordinateur Dell G3.

Utilisez bcmp() - comparez les n premiers octets de mémoire (chaîne) pour voir s'ils sont égaux

Le prototype est :

int bcmp(const void *s1, const void * s2, int n);

[Paramètres] s1, s2 sont les deux éléments de mémoire (ou deux chaînes) qui doivent être comparés, et n est la longueur à comparer.

[Valeur de retour] Si les n premiers octets de s1 et s2 sont égaux ou n est égal à 0, alors renvoyez 0, sinon renvoyez une valeur non-0.

La fonction bcmp() ne vérifie pas NULL.

En fait, bcmp() et memcmp() ont la même fonction, utilisée pour comparer si les n premiers octets du bloc mémoire sont égaux, mais les deux paramètres s1 et s2 sont des pointeurs, et étrangement situés dans string.h, il peut également être utilisé pour comparer des chaînes.

Exemple :

#include <stdio.h>
#include <string.h>
int main ()
{
    char *s1 = "Golden Global View";
    char *s2 = "Golden Global View";
    if( !bcmp(s1, s2, 7) )
        printf("s1 equal to s2 in first 7 bytes");
    else
        printf("s1 not equal to s2 in first 7 bytes");
    return 0;
}

Utilisez strcmp() - Comparez les chaînes (sensible à la casse)

Le prototype est :

int strcmp(const char *s1, const char *s2);

[Paramètre] s1, s2 sont les deux chaînes qui doivent être comparées.

La comparaison des tailles de chaînes est déterminée par l'ordre dans la table des codes ASCII, et cet ordre est également la valeur des caractères. strcmp() soustrait d'abord la première valeur de caractère de s1 de la première valeur de caractère de s2. Si la différence est de 0, il continuera à comparer le caractère suivant. Si la différence n'est pas de 0, la différence sera renvoyée. Par exemple, comparer les chaînes « Ac » et « ba ​​» renverra la différence (-33) entre les caractères « A » (65) et « b » (98).

[Valeur de retour] Si les chaînes des paramètres s1 et s2 sont les mêmes, 0 sera renvoyé. Si s1 est supérieur à s2, une valeur supérieure à 0 est renvoyée. Si s1 est inférieur à s2, une valeur inférieure à 0 est renvoyée.

Remarque : strcmp() effectue des comparaisons en termes binaires et ne prend pas en compte les caractères multi-octets ou à octets larges.

Exemple :

#include <string.h>
main(){
    char *a = "aBcDeF";
    char *b = "AbCdEf";
    char *c = "aacdef";
    char *d = "aBcDeF";
    printf("strcmp(a, b) : %d\n", strcmp(a, b));
    printf("strcmp(a, c) : %d\n", strcmp(a, c));
    printf("strcmp(a, d) : %d\n", strcmp(a, d));
}

Sortie :

strcmp(a, b) : 32
strcmp(a, c) :-31
strcmp(a, d) : 0

Utiliser strictmp() - Comparer les chaînes (insensible à la casse)

Le le prototype est :

int strcmp(char *s1, char *s2);

[Description du paramètre] s1, s2 sont les deux chaînes qui doivent être comparées.

La comparaison des tailles de chaînes est déterminée par l'ordre dans la table de codes ASCII, et cet ordre est également la valeur des caractères. strictmp() soustrait d'abord la première valeur de caractère de s1 de la première valeur de caractère de s2. Si la différence est de 0, il continuera à comparer le caractère suivant. Si la différence n'est pas de 0, la différence sera renvoyée. Par exemple, comparer les chaînes « Ac » et « ba ​​» renverra la différence (-33) entre les caractères « A » (65) et « b » (98).

[Valeur de retour] Si les chaînes des paramètres s1 et s2 sont les mêmes, 0 sera renvoyé. Si s1 est supérieur à s2, une valeur supérieure à 0 est renvoyée. Si s1 est inférieur à s2, une valeur inférieure à 0 est renvoyée.

Remarque : strictmp() est unique à Windows. La fonction avec la même fonction sous Linux est strcasecmp(), qui est incluse dans le fichier d'en-tête strings.h.

Une autre fonction qui compare les chaînes sans respecter la casse est strcmpi(). strcmpi() est la définition macro de strictmp(), mais cette fonction n'est pas réellement fournie.

Exemple : Comparez la taille de deux chaînes.

#include<stdio.h>
#include<string.h>
int main(void)
{
    /*定义两个字符串*/
    char* s1 = "http://see.xidian.edu.cn/cpp/u/biaozhunku/";
    char* s2 = "http://see.xidian.edu.cn/cpp/shujujiegou/";
    /*比较字符串(不分大小写)*/
    int result = stricmp(s1,s2);  // 也可以改成strcmpi()
    if(result>0)
    {
        printf("Result: s1 > s2");
    }
    else if(result<0)
    {
        printf("Result: s1 < s2");
    }
    else if(result == 0)
    {
        printf("Result: s1 = s2");
    }   
    getchar();/*等待用户输入个字符,然后退出*/
    return 0;
}

Sortie :

Result: s1 > s2

Utilisez strncmp() - comparez les n premiers caractères de la chaîne (sensible à la casse)

Son le prototype est :

int strncmp ( const char * str1, const char * str2, size_t n );

[Paramètres] str1, str2 sont les deux chaînes qui doivent être comparées, et n est le nombre de caractères à comparer.

La comparaison des tailles de chaînes est déterminée par l'ordre dans la table des codes ASCII, et cet ordre est également la valeur des caractères. strncmp() soustrait d'abord la première valeur de caractère de s2 de la première valeur de caractère de s1. Si la différence est de 0, il continuera à comparer le caractère suivant jusqu'à la marque de fin de caractère.

另外一个不区分大小写比较字符串前n个字符的函数是strncmpi(),strncmpi()是strnicmp()的宏定义,实际未提供此函数。

示例:对6组字符串进行比较。

#include<stdio.h>
#include<string.h>
int main(void){
    char* s1 = "http://see.xidian.edu.cn/cpp/u/xitong/";
    char* s2 = "HTTP://see.xidian.edu.cn/cpp/u/xitong/";
    char* s3 = "abc";
    char* s4 = "abcxyz";
    char* s5 = "123456";
    char* s6 = "123";
    printf("s1-s2=%d\n", strnicmp(s1, s2, 20));  // 是否区分大小写
    printf("s3-s4=%d\n", strnicmp(s3, s4, 100));  // s3的长度小于s4
    printf("s5-s6=%d\n", strnicmp(s5, s6, 100));  // s5的长度大于s6
    return 0;
}

VC6.0下运行结果:

s1-s2=0
s3-s4=-1
s5-s6=1

GCC下运行结果:

s1-s2=0
s3-s4=-1
s5-s6=1

相关推荐:《C语言视频教程

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

C Structure des données du langage: représentation des données et fonctionnement des arbres et des graphiques C Structure des données du langage: représentation des données et fonctionnement des arbres et des graphiques Apr 04, 2025 am 11:18 AM

C Structure des données du langage: La représentation des données de l'arborescence et du graphique est une structure de données hiérarchique composée de nœuds. Chaque nœud contient un élément de données et un pointeur vers ses nœuds enfants. L'arbre binaire est un type spécial d'arbre. Chaque nœud a au plus deux nœuds enfants. Les données représentent StrustReenode {intdata; structTreenode * gauche; structureReode * droite;}; L'opération crée une arborescence d'arborescence arborescence (prédécision, ordre dans l'ordre et ordre ultérieur) Le nœud d'insertion de l'arborescence des arbres de recherche de nœud Graph est une collection de structures de données, où les éléments sont des sommets, et ils peuvent être connectés ensemble via des bords avec des données droites ou peu nombreuses représentant des voisins.

Comment Debian Readdir s'intègre à d'autres outils Comment Debian Readdir s'intègre à d'autres outils Apr 13, 2025 am 09:42 AM

La fonction ReadDir dans le système Debian est un appel système utilisé pour lire le contenu des répertoires et est souvent utilisé dans la programmation C. Cet article expliquera comment intégrer ReadDir avec d'autres outils pour améliorer sa fonctionnalité. Méthode 1: combinant d'abord le programme de langue C et le pipeline, écrivez un programme C pour appeler la fonction readdir et sortir le résultat: # include # include # include # includeIntmain (intargc, char * argv []) {dir * dir; structDirent * entrée; if (argc! = 2) {

La vérité derrière le problème de fonctionnement du fichier de langue C La vérité derrière le problème de fonctionnement du fichier de langue C Apr 04, 2025 am 11:24 AM

La vérité sur les problèmes de fonctionnement des fichiers: l'ouverture des fichiers a échoué: les autorisations insuffisantes, les mauvais chemins de mauvais et les fichiers occupés. L'écriture de données a échoué: le tampon est plein, le fichier n'est pas écrivatif et l'espace disque est insuffisant. Autres FAQ: traversée de fichiers lents, encodage de fichiers texte incorrect et erreurs de lecture de fichiers binaires.

Comment comprendre la compatibilité ABI en C? Comment comprendre la compatibilité ABI en C? Apr 28, 2025 pm 10:12 PM

La compatibilité ABI en C se réfère si le code binaire généré par différents compilateurs ou versions peut être compatible sans recompilation. 1. Fonction Calling Conventions, 2. Modification du nom, 3. Disposition de la table de fonction virtuelle, 4. Structure et mise en page de classe sont les principaux aspects impliqués.

C Programmation multithread du langage: Guide du débutant et dépannage C Programmation multithread du langage: Guide du débutant et dépannage Apr 04, 2025 am 10:15 AM

C Guide de programmation multithreading Language: Création de threads: Utilisez la fonction PTHREAD_CREATE () pour spécifier l'ID de thread, les propriétés et les fonctions de thread. Synchronisation des threads: empêchez la concurrence des données via des mutex, des sémaphores et des variables conditionnelles. Cas pratique: utilisez le multi-lancement pour calculer le numéro Fibonacci, attribuer des tâches à plusieurs threads et synchroniser les résultats. Dépannage: résoudre des problèmes tels que les accidents de programme, les réponses d'arrêt de fil et les goulots d'étranglement des performances.

Comment produire un compte à rebours dans le langage C Comment produire un compte à rebours dans le langage C Apr 04, 2025 am 08:54 AM

Comment produire un compte à rebours en C? Réponse: Utilisez des instructions de boucle. Étapes: 1. Définissez la variable N et stockez le numéro de compte à rebours à la sortie; 2. Utilisez la boucle while pour imprimer en continu n jusqu'à ce que n soit inférieur à 1; 3. Dans le corps de la boucle, imprimez la valeur de n; 4. À la fin de la boucle, soustrayez N par 1 pour sortir le prochain plus petit réciproque.

C Opération de fichier de langue C: comment lire les fichiers? C Opération de fichier de langue C: comment lire les fichiers? Apr 04, 2025 am 10:42 AM

CLORATION DE FICHIER DE LANGUE C: LIRE Le traitement des fichiers de fichiers est une partie cruciale de la programmation de langage C, qui permet aux programmes d'interagir avec des périphériques de stockage externes tels que les disques et les lecteurs flash. Cet article explorera comment lire des fichiers dans le langage C. Étapes pour lire un fichier pour ouvrir le fichier: utilisez la fonction fopen pour ouvrir le fichier. Cette fonction nécessite deux paramètres: nom de fichier et mode ouvert. Vérifiez si le fichier est ouvert: vérifiez si le pointeur renvoyé par la fonction FOPEN est nul. Si NULL, le fichier ne peut pas être ouvert. Lire Fichier: Utilisez la fonction Fread pour lire les données du fichier vers le tampon. Cette fonction nécessite quatre paramètres: adresse de tampon, taille de l'élément tampon, nombre d'éléments à lire et pointeur de fichier. Fermez le fichier: utilisez f

Introduction détaillée à chaque répertoire de Linux et de chaque répertoire (réimprimé) Introduction détaillée à chaque répertoire de Linux et de chaque répertoire (réimprimé) May 22, 2025 pm 07:54 PM

[DESCRIPTION DU RÉPERTOIRE COMMUN] DIRECTEUR / BIN STORES Fichiers exécutables (LS, CAT, MKDIR, etc.), et les commandes communes sont généralement là. / ETC stocke la gestion du système et les fichiers de configuration / Home Stores tous les fichiers utilisateur. Le répertoire racine du répertoire personnel de l'utilisateur est la base du répertoire domestique de l'utilisateur. Par exemple, le répertoire domestique de l'utilisateur d'utilisateur est / home / utilisateur. Vous pouvez utiliser ~ User pour représenter / USR pour stocker les applications système. Le répertoire plus important / USR / répertoire d'installation du logiciel d'administrateur système local local (installer les applications au niveau du système). Il s'agit du plus grand répertoire, et presque toutes les applications et fichiers à utiliser sont dans ce répertoire. / USR / X11R6 Répertoire pour stocker x fenêtre / usr / bin beaucoup

See all articles