当前位置: 代码迷 >> 综合 >> strcat、strcpy、strcmp、strlwr、strupr的C语言实现以及简单用法
  详细解决方案

strcat、strcpy、strcmp、strlwr、strupr的C语言实现以及简单用法

热度:53   发布时间:2023-12-26 22:01:46.0

strcat 字符串的嫁接(连接)

#include "stdio.h"char *strcat(char *str1, char *str2)
{
    if((str1==NULL)||(str2==NULL)) throw "Invalide arguments!";char *pt = str1;while(*str1!='\0') str1++;while(*str2!='\0') *str1++ = *str2++;*str1 = '\0';return pt;
}int main()
{
    char a[]= "markyuan";char b[]= "yyyyy";char *cat = strcat(a,b);printf("%s\n",cat);
}

strcpy 字符串的拷贝(亲测可用)

#include<stdio.h> 
#include<string.h> int main(){
    char source[5]="abcd";char dest[5]="yuio";strcpy(dest,source);printf("%s%s",dest,source);
}
char *strcpy(char *dst,const char *str){
    if (NULL==dst||NULL==str){
    return NULL;}char *ret =dst;while(*str!='\0'){
    *dst ++ = *str ++;}return ret;
}

strcmp 字符串的比较(来自于linux内核)

strcmp函数是C/C++中基本的函数,它对两个字符串进行比较,然后返回比较结果,函数形式如下:

int strcmp(const char* str1, const char* str2);

其中str1和str2可以是字符串常量或者字符串变量,返回值为整形。返回结果如下规定:
① str1小于str2,返回负值或者-1(VC返回-1); by wgenek 转载请注明出处
② str1等于str2,返回0;
③ str1大于str2,返回正值或者1(VC返回1);

strcmp函数实际上是对字符的ASCII码进行比较,实现原理如下:首先比较两个串的第一个字符,若不相等,则停止比较并得出两个ASCII码大小比较的结果;如果相等就接着 比较第二个字符然后第三个字符等等。无论两个字符串是什么样,strcmp函数最多比较到其中一个字符串遇到结束符’/0’为止,就能得出结果。strcmp算法的可以有多种,不过我觉的可以把这么多算法分为两种,一种是利用减法运算判断结果,另一种是利用比较运算(==)得出结果

#include<stdio.h> 
#include<string.h> int main(){
    char source[5]="abcd";char dest[5]="abcd";if(strcmp(dest,source)==0)printf("equal");elseprintf("not equal");
}int strcmp(const char *cs, const char *ct)
{
    unsigned char c1, c2;while (1) {
    c1 = *cs++;c2 = *ct++;if (c1 != c2)return c1 < c2 ? -1 : 1;if (!c1)break;}return 0;
}

strlwr 字符串的大写字母转小写字母

// 字符全部转换为小写
char* _strlwr_d(char* src)
{
    while (*src != '\0'){
    if (*src > 'A' && *src <= 'Z'){
    //*src += 0x20; *src += 32;}src++;}return src;
}

strupr字符串的小写字母转大写字母

// 字符全部转换为大写
char* _strupr_d(char* src)
{
    while (*src != '\0'){
    if (*src >= 'a' && *src <= 'z')//在ASCII表里大写字符的值比对应小写字符的值小32.//*p -= 0x20; // 0x20的十进制就是32*src -= 32;src++;}return src;
}

在这里插入图片描述

大小写转换的调用

int main()
{
    	char *p = "Neusoft";char k[256];// 字符串全部转成大写_strupr_d(k);// 字符串转换成小写//_strlwr_d(k);cout << k <<endl;system("pause");return 0;
}

库函数调用的应用

#include<stdio.h>
int main()
{
    char str1[20] = {
     "hello" };char str2[] = {
     "bit" };printf("%s", strcat(str1, str2));system("pause");return 0;
}#include<stdio.h>
int main()
{
    char str1[20];char str2[] = {
     "bit" };printf("%s", strcpy(str1, str2));system("pause");return 0;
}#include<stdio.h>
int main()
{
    char str1[10] = {
     "hello" };char str2[10] = {
     "bit" };char max[10];if (strcmp(str1, str2) > 0);printf("%s",str1 );if (strcmp(str1, str2) < 0);strcpy(str2, str1);printf("%s",str2 );system("pause");return 0;
}#include<stdio.h>
int main()
{
    char str[] = {
     "HELLO" };printf("%s\n", strlwr(str));printf("%d", strlen(str));system("pause");return 0;
}
  相关解决方案