欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語言學習筆記之字符串間的那些事

 更新時間:2022年04月17日 17:01:06   作者:禾子日月  
字符串是C語言中最重要的數(shù)據(jù)類型之一,最近借助《C Primer Plus》一書來學習C中的常用字符串操作,在此作為筆記記錄,下面這篇文章主要給大家介紹了C語言學習筆記之字符串間的那些事,需要的朋友可以參考下

字符串表示方式

字符串常量

用雙引號括起來的內(nèi)容稱為字符串常量,例如:"Hello, World!"為一個字符串常量。雙引號中的字符和編譯器自動加入末尾的\0字符,都作為字符串存儲在內(nèi)存中。

字符串常量屬于靜態(tài)存儲類別。當在函數(shù)中使用字符串常量時,該字符串只會被存儲一次,用雙引號括起來的內(nèi)容被視為指向該字符串存儲位置的指針,如以下例程所示:

/* strptr.c -- 把字符串看做指針 */
#include <stdio.h>

int main(void) {

? ? printf("%s, %p, %c\n", "Who", "you", *"are");

? ? return 0;
}

程序輸出結(jié)果如下:

Who, 0x400668, a

#strlen

strlen函數(shù)在使用前需要添加一個頭文件:#include<string.h>

函數(shù)聲明:size_tstrlen(const char *s);

函數(shù)功能:獲取字符串的長度,不包括‘\0’。

返回值:返回字符串中的字符個數(shù)(空格也算一個字符)

例:

#inclue<stdio.h>
#include<string.h>
int main()
{
	char str[]="hello world";
	int len=strlen(str);
	printf("%d",len);//len=11
}

#strcpy和strncpy

##strcpy

函數(shù)聲明:char *strcpy(char *dest,const char *src);

函數(shù)說明:拷貝src指向的字符串到dest指針指向的內(nèi)存中,‘\0’也會拷貝過去。

函數(shù)返回值:目的內(nèi)存的地址。

※※注意:在使用此函數(shù)時,必須保證dest指向的內(nèi)存空間足夠大,否則會出現(xiàn)內(nèi)存污染。

例:

#include<stdio.h>
#include<string.h> 
int main()
{
	char str[]="hello world";
	char s[]="hello earth";
	strcpy(str,s);
	printf("%s",str);//打印結(jié)果是hello earth
} 

##strcnpy

函數(shù)聲明:char *strncpy(char *dest,const char *src,size_tn);

函數(shù)說明:將src指向的字符串前n個字節(jié),拷貝到dest指向的內(nèi)存中。

返回值:目的內(nèi)存的首地址。

※※注意:1.strncpy不拷貝‘\0’

                 2.如果n大于src指向的字符串中的字符個數(shù),則在dest后面填充n-strlen(src)個'\0'

例:

#include<stdio.h>
#include<string.h> 
int main()
{
	char str[]="hello world";
	char s[]="hello earth";
	strncpy(str,s,8);
	printf("%s",str);
} 

#strcat和strncat

##strcat

函數(shù)聲明:char *strcat(char *dest,const char *src);

函數(shù)功能:strcat函數(shù)追加src字符串到dest指向的字符串的后面,追加的時候會追加'\0'。

※※注意:保證dest指向的內(nèi)存空間足夠大。

例:

#include<stdio.h>
#include<string.h> 
int main()
{
	char str[100]="hello world";
	char s[]="hello";
	strcat(str,s);
	printf("%s",str);
} 

 ##strncat

函數(shù)聲明:char *strncat(char *dest,const char *src,size_tn);

追加src指向的字符串的前n個字符,到dest指向的字符串的后面。

※※注意:如果n大于src的字符個數(shù),則只將src字符串追加到dest指向的字符串的后面,追加的時候會追加'\0'

例:

#include<stdio.h>
#include<string.h> 
int main()
{
	char str[100]="hello world";
	char s[]="hello";
	strncat(str,s,4);
	printf("%s",str);
} 

#strcmp和strncmp

##strcmp

函數(shù)聲明:int strcmp(const char *s1,const char *s2);

函數(shù)說明:比較s1和s2指向的字符串的大小。

比較的方法:逐個字符去比較ASCII碼,一旦比較出大小則返回。

返回值:

如果s1指向的字符串大于s2指向的字符串,返回1

如果s1指向的字符串小于s2指向的字符串,返回-1

如果相等的話返回0

例:

#include<stdio.h>
#include<string.h> 
int main()
{
	char str1[]="hello world";
	char str2[]="hello world";
	int ret;
	ret=strcmp(str1,str2);
	printf("%d",ret);//ret==0
} 

##strncmp

函數(shù)聲明:int strncmp(const char *s1,const char *s2,size_t n);

函數(shù)說明:比較s1和s2指向的字符串中的前n個字符

例:

#include<stdio.h>
#include<string.h> 
int main()
{
	char s1[]="hello world";
	char s2[]="hello earth";
	int ret;
	ret=strncmp(s1,s2,5);
	if(ret>0)
		printf("s1的前五個字符大于s2的前五個字符\n"); 
	else if(ret<0)
		printf("s1的前五個字符小于s2的前五個字符\n"); 
	else
		printf("s1的前五個字符等于s2的前五個字符\n"); 
} 

關(guān)于字符串的知識點我暫時梳理了這么多,還有許多未涉及到的地方,希望大家給予意見,接下來讓我們做一道比較有意思的題目。

#題目

輸入n行身份證號,按照年齡排序(從大到小)并輸出。

#include<stdio.h>
#include<string.h>
 
int main()
{
	char a[100][100],birth[100][100],s[100];
	int n,i,j;scanf("%d",&n);
	gets(s);
	for(i=0;i<n;i++)
	{
		gets(a[i]);
		strncpy(birth[i],a[i]+6,8);
	}
	for(i=0;i<n;i++)
	{
		for(j=i+1;j<n;j++)
		{
			if(strcmp(a[j],a[i])<0)
			{
				strcpy(s,a[j]);
				strcpy(a[j],a[i]);
				strcpy(a[i],s);
			}
		}
	}
	for(i=0;i<n;i++)
	{
		printf("%s\n",a[i]);
	}
 } 

總結(jié)

到此這篇關(guān)于C語言學習筆記之字符串間的那些事的文章就介紹到這了,更多相關(guān)C語言字符串內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++?std::chrono庫使用示例(實現(xiàn)C++?獲取日期,時間戳,計時等功能)

    C++?std::chrono庫使用示例(實現(xiàn)C++?獲取日期,時間戳,計時等功能)

    std::chrono是C++標準庫中的一個組件,用于表示和處理時間,這篇文章主要介紹了C++?std::chrono庫使用指南(實現(xiàn)C++?獲取日期,時間戳,計時等功能),需要的朋友可以參考下
    2023-06-06
  • C語言--數(shù)字交換題目詳解

    C語言--數(shù)字交換題目詳解

    本文通過代碼給大家介紹c語言數(shù)字交換的題目,通過實例代碼給大家講解的很詳細,具有一定的參考借鑒價值,對c語言感興趣的朋友一起看看吧
    2021-08-08
  • C++讀寫ini配置文件實現(xiàn)過程詳解

    C++讀寫ini配置文件實現(xiàn)過程詳解

    這篇文章主要介紹了C++讀寫ini配置文件實現(xiàn)過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-07-07
  • C語言繪制余弦、正弦曲線

    C語言繪制余弦、正弦曲線

    這篇文章主要為大家詳細介紹了C語言繪制余弦、正弦曲線的相關(guān)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • c語言基于stdarg.h的可變參數(shù)函數(shù)的用法

    c語言基于stdarg.h的可變參數(shù)函數(shù)的用法

    本篇文章主要介紹了c語言基于stdarg.h的可變參數(shù)函數(shù)的用法,詳細的介紹了可變參數(shù)函數(shù)的詳細用法和源碼實例,有興趣的可以了解一下
    2017-07-07
  • C語言圖文并茂講解分支語句用法

    C語言圖文并茂講解分支語句用法

    分支結(jié)構(gòu)的執(zhí)行是依據(jù)一定的條件選擇執(zhí)行路徑,而不是嚴格按照語句出現(xiàn)的物理順序。分支結(jié)構(gòu)的程序設(shè)計方法的關(guān)鍵在于構(gòu)造合適的分支條件和分析程序流程,根據(jù)不同的程序流程選擇適當?shù)姆种дZ句
    2022-04-04
  • C++實現(xiàn)刪除txt文件中指定內(nèi)容的示例代碼

    C++實現(xiàn)刪除txt文件中指定內(nèi)容的示例代碼

    這篇文章主要介紹了C++實現(xiàn)刪除txt文件中指定內(nèi)容的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • C語言實現(xiàn)運籌學中的馬氏決策算法實例

    C語言實現(xiàn)運籌學中的馬氏決策算法實例

    這篇文章主要介紹了C語言實現(xiàn)運籌學中的馬氏決策算法,簡單介紹了馬氏決策的概念,并結(jié)合實例形式分析了C語言實現(xiàn)馬氏決策算法的具體實現(xiàn)技巧,需要的朋友可以參考下
    2017-09-09
  • C語言之free函數(shù)以及野指針介紹

    C語言之free函數(shù)以及野指針介紹

    以下是對C語言中的free函數(shù)與野指針進行了詳細的分析介紹,需要的朋友可以參考下
    2013-07-07
  • C語言const關(guān)鍵字的用法詳解

    C語言const關(guān)鍵字的用法詳解

    今天探討const,首先來說是將變量常量化。為什么要將變量常量化,原因有諸多好處有諸多。比如可以使數(shù)據(jù)更加安全不會被修改
    2022-08-08

最新評論