c语言字符串函数strcat strcpy strlen strcmp的用法及原型

目录

strcat的用法及原型

strcpy的用法及原型

strcmp用法及原型

strlen用法及原型


strcat的用法及原型

strcat(str1,str2) 意为将字符串str2连接到字符串str1之后

strcat用法如下

#include <stdio.h>
#include <string.h>
 
int main ()
{
   char src[99], dest[99];
 
   strcpy(src,  "This is source");
   strcpy(dest, "This is destination");
 
   strcat(dest, src);
 
   printf("最终的目标字符串: %s", dest);
   
   return 0;
}

输出结果:This is sourseThis is destination

strcat函数的原型如下

char *strcat(char *strDest, const char *strScr) //将源字符串加const,表明其为输入参数
{
       char * p = strDest;             //将目的字符串数组赋给p 
       if(strDest==NULL||strScr==NULL)//对原地址和目的地址加非0断言 
       return strDest; 
       while(*p)             //是while(*p!=’\0’)的简化形式
       {                       
              p++;               
       }                        
       while(*strsource!=0) 
       {
              *p=*strScr;
			  p++;             //依次++以进行连接 
			  strScr++;     
       }
	   *p='\0';                          //有无必要?
       return strDest;               //为了实现链式操作,将目的地址返回
}

dev c++调试代码如下

#include<stdio.h>
#include<string.h>
char *strcat(char *strDest, const char *strScr) //将源字符串加const,表明其为输入参数
{
       char * p = strDest;             //将目的字符串数组赋给p 
       if(strDest==NULL||strScr==NULL)//对原地址和目的地址加非0断言 
       return strDest; 
       while(*p)             //是while(*p!=’\0’)的简化形式
       {                       
              p++;               
       }                        
       while(*strScr!=0) 
       {
              *p=*strScr;
			  p++;             //依次++以进行连接 
			  strScr++;     
       }
	   *p='\0';                          //有无必要?
       return strDest;               //为了实现链式操作,将目的地址返回
}
int main(){
	char str1[99]="The";
	char str2[99]="One";
	printf("%s\n",strcat(str1,str2));
	return 0;
}

输出结果为TheOne 如果怀疑strcat函数本身发挥作用的话可以将调用的函数名称改成strcate之类的 结果也一样哦 来 试试看~

strcpy的用法及原型

strcpy(str1,str2)是将字符串str2复制到str1中去。

其原型char *strcpy(char *dest, const char *src) 把 src 所指向的字符串复制到 dest

需要注意的是如果目标数组 dest 不够大,而源字符串的长度又太长,可能会造成缓冲溢出的情况。

strcpy的用法如下

#include <stdio.h>
#include <string.h>
 
int main ()
{
  char str1[]="Sample";
  char str2[99];
  char str3[99];
  strcpy (str2,str1);
  strcpy (str3,"copy successfully");
  printf ("str1: %s\nstr2: %s\nstr3: %s\n",str1,str2,str3);
  return 0;
}

输出结果为 str1:Sample

                   str2:   Sample

                   str3:    copy successfully

strcpy的原型在这里

char *strcpy(char *strDest, const char *strScr)
{
       char *p=strDest;
       if(strDest==NULL||strScr==NULL)//对原地址和目的地址加非0断言 
       return strDest; 
       while(*strScr)                   //是while(*strScr != ’\0’)的简化形式;
       {
              *strDest++ = *strScr++;
       }
       *strDest = '\0';       //当strScr字符串长度小于原strDest字符串长度,时,如果没有改语句, 
                               //  就会出错了
       return strDest;              
}

dev c++调试过程 strcpy用strcpye代替

#include <stdio.h>
#include <string.h>
char *strcpye(char *strDest, const char *strScr)
{
       char *p=strDest;
       if(strDest==NULL||strScr==NULL)//对原地址和目的地址加非0断言 
       return strDest; 
       while(*strScr)                   //是while(*strScr != ’\0’)的简化形式;
       {
              *strDest++ = *strScr++;
       }
       *strDest = '\0';       //当strScr字符串长度小于原strDest字符串长度,时,如果没有改语句, 
                               //  就会出错了
       return strDest;              
}
 
int main ()
{
  char str1[]="Sample";
  char str2[99];
  strcpye(str2,str1);

  printf ("str1: %s\nstr2: %s\n",str1,str2);
  return 0;
}

strcmp用法及原型

strcmp用于比较字符串。 int strcmp(const char *str1, const char *str2) 把 str1 所指向的字符串和 str2 所指向的字符串进行比较。


其中str1和str2可以是字符串常量或者字符串变量,返回值为整形。返回结果如下规定:
① str1小于str2,返回负值;                  
② str1等于str2,返回0;
③ str1大于str2,返回正值;

strcmp函数实际上是对字符的ASCII码进行比较:首先比较两个字符串的第一个字符,若不相等,则停止比较并得出两个ASCII码大小比较的结果;如果相等就接着向后第二个字符,以此类推。无论两个字符串是什么样,strcmp函数最多比较到其中一个字符串遇到结束符'/0'为止,就能得出结果。

特别注意:strcmp(const char *str1,const char * str2) 这里面只能比较字符串,即可用于比较两个字符串常量,或比较数组和字符串常量,不能比较数字等其他形式的参数。

规定返回值为正数,负数,0 。而确切数值是依赖不同的C实现的。

当两个字符串不相等时,C 标准没有规定返回值会是 1 或 -1,只规定了正数和负数。

有些会把两个字符的 ASCII 码之差作为比较结果由函数值返回。

strcmp用法如下:

#include <stdio.h>
#include <string.h>
 
int main ()
{
   char str1[99];
   char str2[99];
   int ret;
   strcpy(str1, "abcdefF");
   strcpy(str2, "ABCDEFF");
 
   ret = strcmp(str1, str2);
 
   if(ret < 0)
   {
      printf("str1 小于 str2");
   }
   else if(ret > 0) 
   {
      printf("str1 大于 str2");
   }
   else 
   {
      printf("str1 等于 str2");
   }
   
   return 0;
}

运行结果:str1大于str2

strcmp原型如下

int strcmp (const char *str1,const char *str2)
{           
       int len = 0;
       while(*str1 && *str2 && (*str1 == *str2))
       {
              str1++;
              str2++;
       }
       return *str1-*str2;
}

dev c++调试代码如下 strcmp用strcmpa代替

#include <stdio.h>
int strcmpa (const char *str1,const char *str2)
{           
       int len = 0;
    
       while(*str1 && *str2 && (*str1==*str2))
       {
              str1++;
              str2++;
       }
       return *str1-*str2;
}

int main(void)
{
       char str1[99] = {"AA"};
       char str2[99] = {"aa"};
       printf("%d\n",strcmpa(str1,str2));
}

strlen用法及原型

strlen用于记录字符串长度。

strlen(const char *str) 计算字符串 str 的长度,直到空结束字符,但不包括空结束字符。

strlen用法实例在这里:

#include <stdio.h>
#include <string.h>

int main ()
{
   char str[99];
   int len;

   strcpy(str, "You are my destiny");

   len = strlen(str);
   printf("%s的长度是 %d\n", str, len);
   
   return 0;
}

strlen原型如下

int strlen(char *str)
{
    int len = 0;
       while(*str++)
       {
              len++;
       }
       return len;
}

dev c++调试过程如下 函数名用strlenn代替


#include <stdio.h>
int strlenn(char *str)
{
    int len = 0;
       while(*str++)
       {
              len++;
       }
       return len;
}
int main(void)
{
       char str[99] = {"You are my destiny"};
       printf("%d\n",strlenn(str));
}

刚学敲代码的大一小白在此 有不好的地方烦请大家指正~熬夜打字不易 谢谢大家喜欢呀 希望能对你有所帮助❤

### `strcmp` 函数用法 `strcmp` 是 C 语言中用于比较两个字符串的标准库函数,定义在 `<string.h>` 头文件中。该函数接受两个以空字符(null)结尾的字符串作为参数,并返回一个整数值表示这两个字符串的大小关系。 #### 基本语法 ```c int strcmp(const char *str1, const char *str2); ``` - `str1` 和 `str2` 是需要比较的两个字符串指针。 - 返回值: - 如果 `str1` 等于 `str2`,则返回 0; - 如果 `str1` 小于 `str2`,则返回负数; - 如果 `str1` 大于 `str2`,则返回正数。 #### 使用示例 以下是一个基本的使用实例: ```c #include <stdio.h> #include <string.h> int main() { char arr1[] = "abcdef"; char arr2[] = "abq"; int ret = 0; ret = strcmp(arr1, arr2); if (ret < 0) { printf("<\n"); } else if (ret > 0) { printf(">\n"); } else { printf("=\n"); } return 0; } ``` 在此示例中,`strcmp` 比较了两个字符串 `"abcdef"` 和 `"abq"`,根据字符的 ASCII 值进行逐个比较,直到找到不同的字符或到达字符串末尾[^2]。 #### 返回值详解 `strcmp` 的返回值基于字符串中第一个不匹配字符的比较结果。例如: ```c char arr1[] = "Hello"; char arr2[] = "Hello"; char arr3[] = "Hi"; char arr4[] = "Helle"; int a = strcmp(arr1, arr2); // 返回 0 int b = strcmp(arr1, arr3); // 返回负数,因为 'e' < 'i' int c = strcmp(arr1, arr4); // 返回正数,因为 'o' > 'e' ``` 上述代码展示了如何通过 `strcmp` 判断字符串之间的大小关系,其核心是基于每个字符的 ASCII 值进行比较[^4]。 #### 注意事项 - `strcmp` 只能用于比较以 null 结尾的字符串。 - 它区分大小写,如果需要忽略大小写比较,可以使用 `strcasecmp` 或 `_stricmp`(平台相关)。 - 在处理多字节字符或 Unicode 字符时,需确保字符串编码一致,否则可能导致不可预测的结果。 --- ### `strcmp` 在其他编程语言中的应用 虽然 `strcmp` 是 C 语言中的函数,但类似的功能在其他语言中也存在。例如,在 MATLAB 中,`strcmp` 被用来比较字符串数组: ```matlab s1 = ["A","bc"; "def","G"]; s2 = ["B","c"; "def","G"]; tf = strcmp(s1, s2); ``` 此代码将输出一个逻辑数组 `[0 0; 1 1]`,表示对应位置上的字符串是否相等[^3]。 ---
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值