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 不夠大,而源字符串的長度又太長,可能會造成緩衝溢出的情況。
關注公眾號:C語言中文社區,免費領取300G編程資料
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 successfullystrcpy的原型在這裡
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可以是字符串常量或者字符串變量,返回值為整形。返回結果如下規定:
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));
}原文連結:https://blog.csdn.net/Li5566123/article/details/122202701