目录
字符串表示方式#strlen#strcpy和strncpy##strcpy##strcnpy#strcat和strncat##strcat##strncat#strcmp和strncmp##strcmp##strncmp#题目总结字符串表示方式
字符串常量
用双引号括起来的内容称为字符串常量,例如:"Hello, World!"为一个字符串常量。双引号中的字符和编译器自动加入末尾的\0字符,都作为字符串存储在内存中。
字符串常量属于静态存储类别。当在函数中使用字符串常量时,该字符串只会被存储一次,用双引号括起来的内容被视为指向该字符串存储位置的指针,如以下例程所示:
/* strptr.c -- 把字符串看做指针 */ #includeint main(void) { printf("%s, %p, %c\n", "Who", "you", *"are"); return 0; }
程序输出结果如下:
Who, 0x400668, a
#strlen
strlen函数在使用前需要添加一个头文件:#include
函数声明:size_tstrlen(const char *s);
函数功能:获取字符串的长度,不包括‘\0’。
返回值:返回字符串中的字符个数(空格也算一个字符)
例:
#inclue#include int main() { char str[]="hello world"; int len=strlen(str); printf("%d",len);//len=11 }
#strcpy和strncpy
##strcpy
函数声明:char *strcpy(char *dest,const char *src);
函数说明:拷贝src指向的字符串到dest指针指向的内存中,‘\0’也会拷贝过去。
函数返回值:目的内存的地址。
※※注意:在使用此函数时,必须保证dest指向的内存空间足够大,否则会出现内存污染。
例:
#include#include int main() { char str[]="hello world"; char s[]="hello earth"; strcpy(str,s); printf("%s",str);//打印结果是hello earth }
##strcnpy
函数声明:char *strncpy(char *dest,const char *src,size_tn);
函数说明:将src指向的字符串前n个字节,拷贝到dest指向的内存中。
返回值:目的内存的首地址。
※※注意:1.strncpy不拷贝‘\0’
2.如果n大于src指向的字符串中的字符个数,则在dest后面填充n-strlen(src)个"\0"
例:
#include#include int main() { char str[]="hello world"; char s[]="hello earth"; strncpy(str,s,8); printf("%s",str); }
#strcat和strncat
##strcat
函数声明:char *strcat(char *dest,const char *src);
函数功能:strcat函数追加src字符串到dest指向的字符串的后面,追加的时候会追加"\0"。
※※注意:保证dest指向的内存空间足够大。
例:
#include#include int main() { char str[100]="hello world"; char s[]="hello"; strcat(str,s); printf("%s",str); }
##strncat
函数声明:char *strncat(char *dest,const char *src,size_tn);
追加src指向的字符串的前n个字符,到dest指向的字符串的后面。
※※注意:如果n大于src的字符个数,则只将src字符串追加到dest指向的字符串的后面,追加的时候会追加"\0"
例:
#include#include int main() { char str[100]="hello world"; char s[]="hello"; strncat(str,s,4); printf("%s",str); }
#strcmp和strncmp
##strcmp
函数声明:int strcmp(const char *s1,const char *s2);
函数说明:比较s1和s2指向的字符串的大小。
比较的方法:逐个字符去比较ASCII码,一旦比较出大小则返回。
返回值:
如果s1指向的字符串大于s2指向的字符串,返回1
如果s1指向的字符串小于s2指向的字符串,返回-1
如果相等的话返回0
例:
#include#include int main() { char str1[]="hello world"; char str2[]="hello world"; int ret; ret=strcmp(str1,str2); printf("%d",ret);//ret==0 }
##strncmp
函数声明:int strncmp(const char *s1,const char *s2,size_t n);
函数说明:比较s1和s2指向的字符串中的前n个字符
例:
#include#include 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"); }
关于字符串的知识点我暂时梳理了这么多,还有许多未涉及到的地方,希望大家给予意见,接下来让我们做一道比较有意思的题目。
#题目
输入n行身份证号,按照年龄排序(从大到小)并输出。
#include#include int main() { char a[100][100],birth[100][100],s[100]; int n,i,j;scanf("%d",&n); gets(s); for(i=0;i 总结
到此这篇关于C语言学习笔记之字符串间的那些事的文章就介绍到这了,更多相关C语言字符串内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
X 关闭
X 关闭
- 15G资费不大降!三大运营商谁提供的5G网速最快?中国信通院给出答案
- 2联想拯救者Y70发布最新预告:售价2970元起 迄今最便宜的骁龙8+旗舰
- 3亚马逊开始大规模推广掌纹支付技术 顾客可使用“挥手付”结账
- 4现代和起亚上半年出口20万辆新能源汽车同比增长30.6%
- 5如何让居民5分钟使用到各种设施?沙特“线性城市”来了
- 6AMD实现连续8个季度的增长 季度营收首次突破60亿美元利润更是翻倍
- 7转转集团发布2022年二季度手机行情报告:二手市场“飘香”
- 8充电宝100Wh等于多少毫安?铁路旅客禁止、限制携带和托运物品目录
- 9好消息!京东与腾讯续签三年战略合作协议 加强技术创新与供应链服务
- 10名创优品拟通过香港IPO全球发售4100万股 全球发售所得款项有什么用处?