La position actuelle:Accueil du site>Strncat () strncmp ()
Strncat () strncmp ()
2022-07-23 23:14:37【InfoQ】
strncat() - Chaîne de connexion(Limité par la longueur)
**strncat() **
La fonction est déclarée comme suit
char *strncat(char *dest, const char *src, size_t n)
Prends ça.
src
La chaîne pointée est ajoutée à
dest
Fin de la chaîne pointée,Jusqu'à n Jusqu'à la longueur.
dest
→Pointez vers le tableau cible,Le tableau contient un CLangues String,Et assez pour contenir la chaîne ajoutée,Inclure des caractères vides supplémentaires.
src
→Chaîne à ajouter.
n
→Chaîne maximale ajoutée.
Size_t
→Est un symbole non signé(unisgned int)Type entier.
Cette fonction renvoie une chaîne de destination finale
dest
Pointeur vers.
Attention!:Le type de pointeur pour la valeur de retour ici peut êtrevoidC'est possible.char *🧨
strncat()Exemple de code de fonction
Utiliser
strncpy()
Voici un exemple de code de fonction
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
int main(void)
{
char str1[20];
char str2[20];
strcpy(str1, "Cyuyan");
strcpy(str2, "yyds");
printf(strncat(str1, str2, 5));//Ajouter une chaîne!
return 0;
}
Les résultats sont les suivants
Cyuyanyyds
Venez voir les résultats du débogage ensemble, ce serait peut - être mieux

On met
Size_t Le paramètre est changé en④Viens voir.
printf(strncat(str1, str2, 4));

Le résultat de l'opération est toujours le même que ci - dessus .

strncat() Mise en œuvre du programme source
Voici un exemple de code::
char * __cdecl strncat (
char * front,
const char * back,
size_t count
)
{
char *start = front;
while (*front++)
;
front--;
while (count--)
if (!(*front++ = *back++))
return(start);
*front = '\0';
return(start);
}
strncmp() - Comparer les chaînes(Limité par la longueur)
**strncmp() **
La fonction est déclarée comme suit
int strncmp(const char *str1, const char *str2, size_t n
str1
→ Première chaîne à comparer.
str2
→ La deuxième chaîne à comparer.
n
→ Nombre maximum de caractères à comparer.
Cette fonction commence à comparer le premier caractère de chaque chaîne .S'ils sont égaux, Continuez avec la paire suivante ,Jusqu'à ce que les caractères soient différents, Jusqu'à ce qu'un caractère vide se termine , Ou jusqu'à ce que numCorrespondance des caractères, Selon ce qui s'est passé en premier .
Si la valeur de retour < 0,Ça veut dire str1 Moins de str2.
Si la valeur de retour > 0,Ça veut dire str2 Moins de str1.
Si la valeur de retour = 0,Ça veut dire str1 égal à str2.
strncmp()Exemple de code de fonction
Utiliser
strncpy()
Voici un exemple de code de fonction
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
int main(void)
{
char str1[20];
char str2[20];
strcpy(str1, "Cyuyan");
strcpy(str2, "Cyuyanyyds");
printf("%d", strncmp(str1, str2, 6));
return 0;
}
Les résultats sont les suivants
0 → Représentant****str1 égal à str2
S'il n'y avait pas de chaîne supplémentaire ici, le résultat serait -1,Parce questr1<str2. C'est parce que nous avons ajouté le caractère 6, Ça pourrait être str1 = str2.
strncat() Mise en œuvre du programme source
Voici un exemple de code::
int __cdecl strncmp
(
const char *first,
const char *last,
size_t count
)
{
size_t x = 0;
if (!count)
{
return 0;
}
/*
* This explicit guard needed to deal correctly with boundary
* cases: strings shorter than 4 bytes and strings longer than
* UINT_MAX-4 bytes .
*/
if( count >= 4 )
{
/* unroll by four */
for (; x < count-4; x+=4)
{
first+=4;
last +=4;
if (*(first-4) == 0 || *(first-4) != *(last-4))
{
return(*(unsigned char *)(first-4) - *(unsigned char *)(last-4));
}
if (*(first-3) == 0 || *(first-3) != *(last-3))
{
return(*(unsigned char *)(first-3) - *(unsigned char *)(last-3));
}
if (*(first-2) == 0 || *(first-2) != *(last-2))
{
return(*(unsigned char *)(first-2) - *(unsigned char *)(last-2));
}
if (*(first-1) == 0 || *(first-1) != *(last-1))
{
return(*(unsigned char *)(first-1) - *(unsigned char *)(last-1));
}
}
}
/* residual loop */
for (; x < count; x++)
{
if (*first == 0 || *first != *last)
{
return(*(unsigned char *)first - *(unsigned char *)last);
}
first+=1;
last+=1;
}
return 0;
}
Mentions de copyright
Auteur de cet article [InfoQ],Réimpression s’il vous plaît apporter le lien vers l’original, merci
https://fra.chowdera.com/2022/204/202207232312171688.html
Recommandé par sidebar
- Transplantation de systèmes embarqués
- Saisissez une chaîne de caractères à partir du clavier et affichez différents caractères et le nombre d'occurrences de chaque caractère. (la sortie n'est pas séquentielle) résoudre le problème en utilisant la méthode commune de la classe de chaîne
- 2019 Bar _ Aaai ICCN
- Conditions affectant la vitesse de requête de l'interface
- Stack et file d'attente de l'adaptateur STL
- Analyse de la stratégie de lecture et d'écriture du cache
- Classes et objets (1)
- Expérience II Yuv
- Comment synchroniser
- [arxiv2022] grouptransnet: Group transformer Network for RGB - D Salient Object Detection
Devinez que vous aimez
Avantages de la salle des machines bgp
La fosse Piétinée par l'homme vous dit d'éviter les 10 erreurs courantes dans les tests automatisés
Déterminer s'il s'agit d'un type vide
Langue C - quelques exercices classiques de langue C
Openvino Datawhale
Question 300 Leçon 6 type quadratique
Analyse du code source et de la conception de redis - - 7. Liste rapide
Concepts et différences de bits, bits, octets et mots
Déploiement du projet (version abrégée)
JDBC Learning and simple Encapsulation
Recommandé au hasard
- [Python flask note 5] Blueprint simple à utiliser
- Composants web - cycle de vie des éléments personnalisés
- Entrepôt de données 4.0 Notes - acquisition de données commerciales
- Entrepôt de données 4.0 Notes - acquisition de données sur le comportement de l'utilisateur II
- Affichage itératif des fichiers.h5, opérations de données h5py
- Résumé des connaissances mathématiques communes
- Comment se développe le serveur GPU refroidi à l'eau dans le Centre de données dans le cadre de l'informatique est - Ouest?
- Connaissance du matériel 1 - schéma et type d'interface (basé sur le tutoriel vidéo complet de l'exploitation du matériel de baiman)
- Examen des principes fondamentaux de la structure en acier
- Unity3d: ugui source, Rebuild Optimization
- Solution rapide: xshell ne peut pas glisser dans un dossier ou un paquet
- Rhcsa - - parcourir le contenu du fichier, couper, uniq, trier, utiliser les commandes.tr
- Intégrité du signal (si) intégrité de l'alimentation électrique (PI) notes d'apprentissage (32) Réseau de distribution d'énergie (4)
- Quelle est la raison pour laquelle la plate - forme easygbs ne peut pas lire l'enregistrement vidéo et a un phénomène de streaming répété rtmp?
- Notes du jour 7
- 【 Visual Dispatching Software】 Shanghai Dow Ning apporte netronic download, Trial, tutoriel pour l'Organisation SMB
- 2. Les règles quantitatives
- Événements courants de la souris et du clavier
- C #: in, out, ref Keywords
- Connaissance détaillée du GRE, du mgre; Connaissance de la configuration de base de l'OSPF
- Comment creo 9.0 modifie - t - il rapidement le système de coordonnées Cao?
- Notes du jour 5
- Renforcement de l'apprentissage - points de compréhension du gradient stratégique
- Le shell a besoin de connaître les commandes
- Okrk3399 Development Board Reserved i2c4 Mounting EEPROM
- Optimisation du serveur Cloud Huawei avec connexion clé
- Chapitre 2 requête de base et tri
- 【 langage c】 devinez jeux numériques + applet d'arrêt
- Qu'est - ce que le codage par titre?
- Feignclient utilise un tutoriel détaillé (illustration)
- Kettle implémente une connexion de base de données partagée et insère une instance de composant de mise à jour
- Simulation de modulation et de démodulation du signal CBOC basée sur MATLAB, sortie de corrélation, spectre de puissance et suivi de décalage de fréquence
- Les raccourcis clavier liés à l'onglet ne peuvent pas être utilisés après la mise à jour du vscode
- Expression du suffixe (une question par jour pendant les vacances d'été 4)
- Idées de conception sur l'initialisation des paramètres d'entrée de page
- Éléments de base de la validation des haricots - 04
- Une solution complète au problème du sac à dos dans la programmation dynamique
- Récursion des bosses 1: formule récursive
- Explication détaillée de l'injection aveugle d'erreur SQL
- Données chronologiques dans l'Internet industriel des objets