最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言學(xué)習(xí)筆記之字符串間的那些事

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

字符串表示方式

字符串常量

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

字符串常量屬于靜態(tài)存儲類別。當(dāng)在函數(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語言學(xué)習(xí)筆記之字符串間的那些事的文章就介紹到這了,更多相關(guān)C語言字符串內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • c++ const引用與非const引用介紹

    c++ const引用與非const引用介紹

    const引用是指向const對象的引用,可以讀取ref,但不能修改所以也就有將const變量賦值給非const引用是非法的,感興趣的朋友可以了解下,或許本文對你有所幫助
    2013-01-01
  • C++多重繼承與虛繼承分析

    C++多重繼承與虛繼承分析

    這篇文章主要介紹了C++多重繼承與虛繼承分析,是面向?qū)ο蟪绦蛟O(shè)計非常重要的知識點,需要的朋友可以參考下
    2014-08-08
  • C++數(shù)據(jù)結(jié)構(gòu)與算法之反轉(zhuǎn)鏈表的方法詳解

    C++數(shù)據(jù)結(jié)構(gòu)與算法之反轉(zhuǎn)鏈表的方法詳解

    這篇文章主要介紹了C++數(shù)據(jù)結(jié)構(gòu)與算法之反轉(zhuǎn)鏈表的方法,結(jié)合實例形式分析了C++反轉(zhuǎn)鏈表的原理、實現(xiàn)方法及相關(guān)注意事項,需要的朋友可以參考下
    2017-08-08
  • VS2019創(chuàng)建c++動態(tài)鏈接庫dll與調(diào)用方法實踐

    VS2019創(chuàng)建c++動態(tài)鏈接庫dll與調(diào)用方法實踐

    動態(tài)鏈接庫是一個包含可由多個程序同時使用的代碼和數(shù)據(jù)的庫,本文主要介紹了VS2019創(chuàng)建c++動態(tài)鏈接庫dll與調(diào)用方法,具有一定的參考價值,感興趣的可以了解一下
    2024-06-06
  • 解析C語言與C++的編譯模型

    解析C語言與C++的編譯模型

    C++繼承了C的編譯模型,C語言的編譯鏈接模型相對簡潔,但C++繼承了這些機(jī)制之后變得更加復(fù)雜難以理解,這里就來帶大家簡要解析C語言與C++的編譯模型
    2016-05-05
  • C++你可能不知道地方小結(jié)

    C++你可能不知道地方小結(jié)

    c++中編譯器替我們完成了許多事情,我們可能不知道,但也可能習(xí)以為常
    2013-01-01
  • C語言 字符串指針詳解及示例代碼

    C語言 字符串指針詳解及示例代碼

    本文主要介紹C語言 字符串指針,這里整理了詳細(xì)資料,并附示例代碼及實現(xiàn)結(jié)果,有興趣的小伙伴可以參考下
    2016-08-08
  • 對C語言中遞歸算法的深入解析

    對C語言中遞歸算法的深入解析

    C通過運(yùn)行時堆棧支持遞歸函數(shù)的實現(xiàn)。遞歸函數(shù)就是直接或間接調(diào)用自身的函數(shù)
    2013-07-07
  • 生成隨機(jī)數(shù)rand函數(shù)的用法詳解

    生成隨機(jī)數(shù)rand函數(shù)的用法詳解

    本篇文章是對生成隨機(jī)數(shù)rand函數(shù)的用法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C語言中輸入輸出流與緩沖區(qū)的深入講解

    C語言中輸入輸出流與緩沖區(qū)的深入講解

    一般情況下,由鍵盤輸入的字符并沒有直接送入程序,而是被存儲在一個緩沖區(qū)當(dāng)中。下面這篇文章主要給大家介紹了關(guān)于C語言中輸入輸出流與緩沖區(qū)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2018-09-09

最新評論

尉犁县| 刚察县| 界首市| 开江县| 满洲里市| 阿拉尔市| 新绛县| 宜都市| 霸州市| 吉安市| 金堂县| 蒙自县| 高雄县| 阜新市| 任丘市| 鄱阳县| 天门市| 株洲市| 驻马店市| 齐河县| 杨浦区| 东至县| 九江市| 宜春市| 高阳县| 六盘水市| 阳春市| 余干县| 辽宁省| 谢通门县| 黄陵县| 高台县| 淳化县| 宁国市| 正宁县| 资阳市| 绥芬河市| 宣汉县| 朔州市| 措勤县| 通城县|