首页 > 其他分享 >字符串复健(c语言)

字符串复健(c语言)

时间:2023-11-07 23:34:35浏览次数:43  
标签:复健 字符 语言 空字符 char 字符串 ptr string

目录

目录


字符串的声明和初始化

在 C 语言中,字符串实际上是使用空字符 \0 结尾的一维字符数组

声明和初始化一个abc字符串:
char site[4] = {'a', 'b', 'c', '\0'};
简化:
char site[] = "abc";


字符串的内存表示

因此,

  1. \0 是用于标记字符串的结束
  2. 由于在数组的末尾存储了空字符 \0字符数组的大小比实际存储的字符数多一个
  3. 字符串char site[]="abc"site表示字符串第一个字符'a'的地址

字符串的输入输出

输入

1.scanf("%s",a(地址),n)=>stdio.h
n表示至多读取n-1个字符,即n表示输入的字符串的最大长度(包括\0)
遇到空格等空字符会返回,不读取空格等空字符
1.1scanf("%[^o]",a(地址),sizeof(a))=>stdio.h
%[^o]使输入遇到o字符再返回,不读取o字符
2.gets(s)=>stdio.h
从标准输入(键盘)读入一行数据,所谓读取一行,就是遇到换行符就返回。
gets()函数读取空格,不读取换行符\n,它会把换行符替换成空字符\0,作为c语言字符串结束的标志

输出

1.printf("%s",a(变量名))=>stdio.h
输出字符串a
2.puts=>stdio.h
用于显示字符串,并自动在字符串后面添加一个换行标志\n

字符串相关函数

PS:若无特殊说明,函数返回值一般为int型。

1.n=strlen(s)=>string.h
得到字符串s的长度不包含'\0',返回给n;
2.long int n=strtol(s,&ptr,base)=>stdlib.h
把指针s所指向的字符串根据给定的 base(指s中的数值的进制) 转换为一个长整数(10进制,类型为 long int 型),base 必须介于 2 和 36(包含)之间,或者是特殊值 0。
&ptr是对类型为 char* 的对象的引用,其值由函数设置为s中数值后的下一个字符
#include <stdio.h>
#include <stdlib.h>

int main()
{
   char s[30] = "2030300 This is test";
   char *ptr;
   long ret;

   ret = strtol(s, &ptr, 10);
   printf("数字(无符号长整数)是 %ld\n", ret);
   printf("字符串部分是 |%s|", ptr);

   return(0);
}

运行结果:

3.strcpy(a,b)=>string.h
把字符串b复制给a
4.n=strcmp(a,b)=>string.h
判断字符串a和b的大小,按字符串长度和字典顺序
if(a<b),n<0;if(a==b),n==0;if(a>b),n>0.
5.strcat(a,b)=>string.h
把b字符串接到a的后面,a要足够大

6.(指针)p=strchr(a,c)=>string.h
返回字符串a中字符c第一次**出现的地址

7.(指针)p=strrchr(a,c)=>string.h
返回字符串a中字符c最后出现一次的地址

8.(指针)p=strstr(a,b)=>string.h
返回字符串a中第一次出现子字符串b的地址


总结

c语言中的字符串由一个或多个字符组成,以空字符结尾,但字符串长度不包括空字符。
字符串常常用字符数组char a[n]和指针char *p=a来表示。
对字符串操作时要注意数组长度足够大,否则会导致数组越界。

标签:复健,字符,语言,空字符,char,字符串,ptr,string
From: https://www.cnblogs.com/wa2211lq/p/17816343.html

相关文章

  • 学习c语言的一天(1)
     打印地址使用%p输出int(整型)二维数组时,发现地址每次+4,是因为一个整型占4个字节,同理输出char(字符型)二维数组占1个字节,所以存储地址每次+1 #define_CRY_SECURE_NO_WARNINGS#include<stdio.h>intmain(){ intarr[3][4]={{1,2,3,4},{5,6}};charcarr[3][4]={{'a......
  • 如何遍历字符串数组元素的每一位.318
    code:intmaxProduct(char**words,intwordsSize){  inta[wordsSize];       //目标字符串转换成整型数组元素  intmaxlen=0;        //最大长度乘积  for(inti=0;i<wordsSize;++i){    //遍历字符串数......
  • Java语言基础知识全总结
    一.Java的优点1.      跨平台性。一次编译,到处运行。Java编译器会将Java代码编译成能在JVM上直接运行的字节码文件,C++会将源代码编译成可执行的二进制代码文件,所以C++执行速度快2.      纯面向对象。Java所有的代码都必须在类中书写。C++兼具面向对象和面向过程的特......
  • 【Cpp 语言基础】C++中的 getline() 函数
    一、string类的getline函数(全局函数)getline(cin,str)函数是处理string类的函数。第二个参数为string类型的变量。读入时第二个参数为string类型,而不是char*,要注意区别     getline()函数的定义如下所示    1.istream&getline(istream&is,string&str,ch......
  • 统计范围内的元音字符串数
    题目概述:给你一个下标从0开始的字符串数组words和两个整数:left和right。如果字符串以元音字母开头并以元音字母结尾,那么该字符串就是一个元音字符串,其中元音字母是'a'、'e'、'i'、'o'、'u'。返回words[i]是元音字符串的数目,其中i在闭区间[left,right]内。解......
  • 用c语言写“扫雷游戏”
    扫雷游戏是一款简单却富有挑战性的益智游戏,适合所有年龄段的玩家。游戏的操作简单,但是需要玩家具备较高的逻辑推理能力和观察力,让人在游戏的过程中不断思考、分析、判断。游戏同时也可以锻炼玩家的注意力和耐心,让人享受到难度和成功带来的成就感。总体来说,扫雷游戏是一款有趣又有益......
  • Base64编码、解码 C语言例子(使用OpenSSL库)
    #include<stdio.h>#include<string.h>#include<unistd.h>#include<openssl/pem.h>#include<openssl/bio.h>#include<openssl/evp.h>intbase64_encode(char*in_str,intin_len,char*out_str){BIO*b64,*bio;......
  • Python语言的特点
    Python语言的设计非常优雅,明确,简单。语法简洁:实现相同语言的代码行数,是其他语言的1/5或者1/10,编写起来更加简单与平台无关:Python程序可以在如何安装了Python解释器的计算机的环境上运行粘性拓展:能够整合各种代码,被称为胶水语言开源理念:为语言发展奠定了坚实的群众基础灵活通......
  • 通关Go语言,从基本原理到项目实战,由浅入深Go的底层原理与核心特性
    通关Go语言,从基本原理到项目实战,由浅入深Go的底层原理与核心特性go核心原理本人在一家go技术栈工作2年有余,因此梳理一下我认为比较重要的go语言技术知识,一些基础的概念,比如function,interface这些就忽略了。https://draveness.me/golang/https://www.bookstack.cn/read/qcr......
  • C语言 读取二进制文件中的数组
    获取最后n行数据把每个数组看成是1行#include<stdio.h>intmain(void){//示例数据成员大小最多20字节成员数量最多5个chars1[5][20]={"a1","a2","a3","a4","a5"};chars2[5][20]={"b1","b2",&qu......