精华内容
下载资源
问答
  • 1)字符串操作 strcpy(p, p1) 复制字符串 strncpy(p, p1, n) 复制指定长度字符串 strcat(p, p1) 附加字符串 strncat(p, p1, n) 附加指定长度字符串 strlen(p) 取字符串长度 strcmp(p, p1) 比较字符串 strcasecmp忽略...
  • 大家知道strcpy 是子环节复制字符串,可能不知道还有个strncpy,这是复制指定长度的字符串 chardes[]="Hello,iam!"; charsource[]="abcdefg"; strncpy(chardes,charsource,3); 这时chardes的值是abc 注意这里可...
  • 在这里和大家分享一个能实现C语言字符串操作的库函数,感性趣的朋友可以参考下。
  • C语言字符串操作

    2019-01-24 18:22:31
    在UC编程中,会经常与字符串打交道,比如读写文件时文件的路径,等等。...3、C语言一些常用的字符串操作函数 3.1 strcpy() 3.2 strcat() 3.3 strlen() 3.4 strcmp() 3.5 memcpy() 3.6 sprintf(...

    在UC编程中,会经常与字符串打交道,比如读写文件时文件的路径,等等。本文会详细地讲解字C语言中字符串地操作,并且会在最后给一段字符串的代码。

    目录

    1、什么是字符串?

    2、常见的字符串操作

    3、C语言一些常用的字符串操作函数

    3.1 strcpy()

    3.2 strcat()

    3.3 strlen()

    3.4 strcmp()

    3.5 memcpy()

    3.6 sprintf()

    4 一个示例代码


    1、什么是字符串?

    c语言中, 由零个或多个字符组成且通过双引号括起来的有限序列就叫字符串.例如:"hello world", “123”等等。字符串在内存中是由字符型数组来存储的,且在存储的时候多加'\0'表示字符串已经结束。例如:char string[12] = "hello wolrd"。注意,字符串是以'\0'结尾的,所以存储的数组大小至少是字符串长度加1。

     

    2、常见的字符串操作

    1、赋值:给一个字符串相关变量赋初始值,比如给一个字符数组赋初始值。

    2、复制:将一个字符串的值复制到另一个字符串。

    3、合并:将两个字符串合并成一个字符串。

    4、拆分:将一个字符串根据某个字符拆分成多个字符串。

    5、对比:比较两个字符串是否相同。

     

    3、C语言一些常用的字符串操作函数

    3.1 strcpy()

    头文件:

    #include<string.h>

    char *strcpy(char* dest, const char *src);

    功能:把从src地址开始且含有’\0’结束符的字符串复制到以dest开始的地址空间。

    描述:

    src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。所以经常用这个函数来对字符数组赋初始值。

    返回,返回操作之后的dest指针。

     

    3.2 strcat()

    头文件:

    #include<string.h>

    char *strcat(char *dest, const char *src)

    功能:将src指向的字符串追加到dest指向的字符串的结尾处。

    描述:

    dest是一个字符串指针,src也是一个字符串指针。

    dest的指向的内存的剩余空间的大小必须大于src指向的内存。

    返回,返回dest指针。

     

    3.3 strlen()

    头文件:

    #include<string.h>

    unsigned int strlen(char *s);

    功能:获得字符串s的大小。

    描述:

    S是一个字符串,这个函数实际上是一个计数器,直到遇到’\0’停止,返回的大小不包括’\0’。

    返回,返回一个无符号整数,即字符串的大小。

     

    3.4 strcmp()

    头文件:

    #include<string.h>

    int strcmp(const char *s1,const char *s2);

    功能:比较s1和s2的大小

    描述:

    S1和s2是两个字符串,两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止。

    返回,如果两个相同,则返回0,如果s1>s2,返回正数,如果s1<s2返回负数。

     

    3.5 memcpy()

    头文件

    #include<string.h>

    void *memcpy(void *dest, const void *src, size_t n);

    功能:从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中。

    描述:

    dest的大小必须大于n。

    返回,返回dest指针。

     

    3.6 sprintf()

    头文件:

    #include<stdio.h>

    int sprintf( char *buffer, const char *format, [ argument] … );

    功能:把格式化的数据写入某个字符串缓冲区。

    描述:这个函数十分的强大,buffer是待写入的字符串,后面的操作和printf()类似,例如:

    char buf[100];

    sprint(buf,”qzq is  %d percent handsome”,100);

    则buf的内容是”qzq is 100 percent handsome”。

    返回,如果成功,返回写入buf的字符数,失败则返回-1.

     

    4 一个示例代码

    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    
    
    int main(){
    	
    	char *s1="abc";
    	char s2[10]="abc";
    	s1="123";
    	strcpy(s2,"123");
    	printf("s1 is %s,s2 is %s\n",s1,s2);
    
    	char* ps=malloc(4);
    	ps="123";
    	strcpy(ps,"abc");
    	printf("ps=%s\n",ps);
    
    	char s3[10]="abc";
    	char* s4="abcdef";
    	printf("sizeof(s3)=%d\n",sizeof(s3));
    	printf("sizeof(s4)=%d\n",sizeof(s4)/sizeof(char*));
    	printf("strlen(s3)=%d\n",strlen(s3));
    	printf("strlen(s4)=%d\n",strlen(s4));
    
    	char* s5="abc";
    	char* s6="abc";
    	printf("%d\n",s5==s6);
    	printf("%d\n",strcmp(s5,s6));
    
    	char* s7="zhangfei";
    	char* s8="feifei123";
    	char buf[30]={};
    	strcpy(buf,s7);
    	strcat(buf,",");
    	strcat(buf,s8);
    	sprintf(buf,"%s,%s",s7,s8);
    	printf("%s",buf);/
    	char* s9="abcccabbaaca";
    	int count=0;
    	while(*s9){
    		if(*s9=='a')
    			count++;
    		s9++;
    	}
    	printf("count = %d\n",count);
    
    	char name[10]={};
    	char passwd[10]={};
    	char* buf="zhangfei,feifei123";
    	int pos=0;
    	while(*(buf+pos)!=',')
    		pos++;
    	memcpy(name,buf,pos);
    	strcpy(passwd,buf+pos+1);
    	printf("name =%s\n",name);
    	printf("passwd = %s\n",passwd);
    
    	char buf[20]={};
    	int x=10;
    	sprintf(buf,"%d\n",x);
    	printf("%s\n",buf);
    	
    
    
    	return 0;
    }
    

     

     

     

    展开全文
  • 功能:将字符串str2复制到字符串str1中,并覆盖str1原始字符串,可以用来为字符串变量赋值。 返回:str1 注意: (1). 字符串str2会覆盖str1中的全部字符; (2). 字符串str2的长度不能超过str1; (3). 拷贝原理...

    1. strcpy函数

    语法:strcpy(str1,str2)

    功能:将字符串str2复制到字符串str1中,并覆盖str1原始字符串,可以用来为字符串变量赋值。

    返回:str1

    注意:

    (1). 字符串str2会覆盖str1中的全部字符;

    (2). 字符串str2的长度不能超过str1;

    (3). 拷贝原理:从首元素开始,遇到\0结束。

    int main()
    {
        char *str1 = "hello world";
        char *str2;
        // 把str1的内容拷贝到str2,参数为字符数组指针
        strcpy(str2, str1);
        printf("str2 = %s\n", str2);
        // str2 = hello world
    
        char str3[15] = "hello\0 world";
        char str4[15];
        // str4的内容拷贝到str3,遇到\0结束
        strcpy(str4, str3);
        printf("str4 = %s\n", str4);
        // str4 = hello
    
        return 0;
    }
    

    2. strncpy函数

    语法:strncpy(str1,str2,n)

    功能:将字符串str2中的前n个字符复制到字符串str1的前n个字符中。

    返回:str1

    注意:

    (1). 不会清除str1中全部字符串,只会改变前n个字符串;

    (2). n不能大于字符串str1、str2的长度;

    (3). 但是如果使用strncpy_s便会清除str1中的全部字符串。

    int main()
    {
        char str1[] = "day day up";
        char str2[] = "you are";
        strncpy(str1, str2, strlen(str2));
        printf("%s\n", str1); 
        // you are up
        return 0;
    }
    

    3. strcat函数

    语法:strcat(str1,str2)

    功能:将字符串str2添加到字符串str1的尾部,也就是拼接两个字符串。

    返回:str1

    int main()
    {
        char str1[] = "hello";
        char str2[] = "world";
        strcat(str1, str2); 
    
        printf("%s\n", str1);
        // hello world
        return 0;
    }
    

    4. strncat函数

    语法:strncat(str1,str2,n)

    功能:将字符串str2的前n个字符添加到字符串str1的尾部。

    返回:str1

    注意:拼接之后的长度不能超过字符串数组str1的长度。

    int main()
    {
        char str1[] = "hello ";
        char str2[] = "world";
        strncat(str1, str2, 2); 
        printf("%s\n", str1);
        // hello wo
        return 0;
    }
    

    5. strlen函数

    语法:strlen(str1)

    功能:计算字符串str1的长度。

    返回:int值

    注意:字符串的长度不包括字符'\0'。

    int main()
    {
        char *str1 = "hello world";
        char *str2 = "hello,\0 kite";
        int l1 = strlen(str1);
        int l2 = strlen(str2);
        printf("l1 = %d\n", l1); 
        // 11
        printf("l2 = %d\n", l2); 
        // 6
        return 0;
    }
    

    6. strcmp函数

    (1). 语法:strcmp(str1,str2)

    功能:比较两个字符串。

    A. 如果两个字符串相等,则返回0;

    B. 若str1大于str2,返回一个正数,这个正数不一定是1;

    C. 若str1小于str2,返回一个负数,这个数不一定是-1;

    (2). 语法:strncmp(str1,str2,n)

    功能:比较两个字符串的前n个字符。

    (3). 语法:stricmp(str1,str2)(在Windows中使用stricmp,在Linux中使用strcasecmp)

    功能:忽略两个字符串中的大小写比较字符串,也就是对大小写不敏感。

    注意:如果在VS2017中直接使用stricmp会提示如下错误。

     处理办法可用_stricmp代替。

    返回:0或一个正数或一个负数。

    int main()
    {
        char str1[] = "Wearecsdn!";
        char str2[] = "Wearecsdn!";
        char str3[] = "Wearea!";
        char str4[] = "Wearef!";
        char str5[] = "Weare";
        char str6[] = "weAreCsdn!";
     
        int cmp1 = strcmp(str1, str2);        //cmp1=0
        int cmp2 = strcmp(str1, str3);        //cmp2=1
        int cmp3 = strcmp(str1, str4);        //cmp3=-1
        int cmp4 = strcmp(str1, str5);        //cmp4=1
     
        int cmp5 = strncmp(str1, str2, 5);    //cmp5=0
        int cmp6 = strncmp(str1, str3, 5);    //cmp6=0
        int cmp7 = strncmp(str1, str4, 5);    //cmp7=0
        int cmp8 = strncmp(str1, str5, 5);    //cmp8=0
     
        int cmp9 = _stricmp(str1, str6);      //cmp9=0
    
        return 0;
    }

    7. strchr函数

    (1). 语法:strchr(str,c)

    功能:从字符串的首地址开始查找,在str字符串中查找首次出现字符c的位置。

    (2). 语法:strrchr(str,c)

    功能:在字符串str中从后向前开始查找字符c首次出现的位置。

    (3). 语法:strstr(str1,str2)

    功能:在字符串str1中查找字符串str2的位置,若找到,则返回str2第一个字符在str1中的位置的指针,若没找到,返回NULL。

    返回:字符c的位置的指针,若没有查找到字符c,则返回空指针NULL。

    int main()
    {
        // strchr查询字符 
        char *str = "no one can help you";
        // 在字符串中查询字符 h ,如果存在返回h的地址
        // 如果不存在返回NULL
        char *s = strchr(str, 'h');
        if(s){
            printf("存在字符:%c\n", *s);
        } else {
            printf("不存在字符\n");
        }
    
        // strstr查询字符串函数
        char *st = strstr(str, "help");
        // 在字符串中查询字符 help ,如果存在返回help的首地址
        // 如果不存在返回NULL
        if(st){
            printf("存在字符串:%p\n", *st); 
        } else {
            printf("不在在字符串\n");
        }
        return 0;
    }
    

    8. strpbrk函数

    语法:strpbrk(str1,str2)

    功能:依次检验字符串 str1 中的字符,当被检验字符在字符串 str2 中也包含时,则停止检验,并返回该字符位置。

    返回:第一个两个字符串中都包含的字符在str1中的位置的指针。

    int main()
    {
        char str1[] = "We12are34csdn!";
        char str2[] = "32";
     
        char* ret1;
        ret1 = strpbrk(str1, str2);   
     
        int r1 = ret1 - str1;        
     
        printf("%c\n", *ret1); 
        // *ret1 = 2
        printf("%d\n", r1);   
        // r1 = 3
        
        return 0;
    
    }
    

    9. 字符串转数字atoi、atof、atol函数

    (1). 语法:atoi(str)

    功能:字符串转换到int整型

    (2). 语法:atof(str)   

    功能:字符串转换到double浮点数

    (3). 语法:atol(str)  

    功能:字符串转换到long整形

    展开全文
  • C语言实现字符串拆分操作,把字符串拆分成字符串数组,然后再输出。 使用sstream方法,作为底层驱动操作实现非常方便。
  • C语言字符串操作的8个库函数源代码 1.strcpy.c 2.strcat.c 3.strlen.c 4.Insstr.c 5.substr.c 6.strstr.c 7.delstr.c 8.strcmp.c
  • 这个例子从文本文件ad9361.txt一行一行读取数据,通过spi设置寄存器值。支持命令读写:spidev_test -r F1 -w A0,-r参数表示寄存器地址,-w表示要写入的值,均为16进制(不要加0x开头)
  • C语言实现合并字符串

    2020-12-23 04:47:34
    进行字符串的拼接在这些高级脚本语言中是一件轻松的事情。 C语言是我的编程入门语言,但是我一直对这门语言了解并不是很深。确切说,我是对庞大的标准库以及GNU等函数库知之甚少。 使用C语言进行字符串的拼接应该...
  • 主要介绍了C字符串操作函数实现方法,实例总结了C语言字符串操作的相关技巧,非常具有实用价值,需要的朋友可以参考下
  • 又遇见几个好题,和以前的一些凑一块写一篇文章,作为我延迟...  10 将s所指字符串复制到字符串t中  题目有四个选项,为什么我会选这个题呢,因为自己在面试C++的岗位中第一次遇见,印象里好像是写错了,然后在练习
  • C语言字符串操作大全

    2018-11-22 18:10:48
    C语言字符串操作大全,用于对字符串数据的各种操作和指令
  • C语言toascii()函数:将字符转换成对应的ASCII码 头文件: #include 定义函数: int toascii(int c); 函数说明:toascii()会将参数c 转换成7 位的unsigned char 值,第八位则会被清除,此字符即会被转成ASCII码...
  • C语言中,字符的操作有多种方法,这里主要是特有的字符串库函数进行操作,简化编程过程,增强学生对字符串及字符操作的理解。
  • 包括拷贝字符串,拷贝字符串的一部分,比较字符串字符串右对齐,删去字符串前后的空格,转换字符串,等等。
  • 字符串操作1.strlen(s),返回字符串长度2.strcmp(s1,s2)比较字符串将两个字符串从左至右逐个字符比较(按ASCII大小值比较),如果s1=s2,返回值=0,s1&gt;s2,返回值&gt;0,s1&lt;s2,返回值&lt;03....
    
    
    • 字符串操作

    1.strlen(s),返回字符串长度

    2.strcmp(s1,s2)比较字符串

    将两个字符串从左至右逐个字符比较(按ASCII大小值比较),

    如果s1=s2,返回值=0,s1>s2,返回值>0,s1<s2,返回值<0

    3.strcasecmp(s1,s2)忽略大小写比较字符串,返回值同上

    4.strncmp(s1,s2,p) 比较字符串前n个字符

    5.strcpy(s,s1) 复制字符串

    把s1复制到s 中,复制的时候包括标志字符串结尾的空字符一起复制

    操作成功返回s,否则为NULL。

    6.strncpy(s,s1,n) 复制指定长度字符串,将s1前n个字符复制到s中

    7.strchr(s,c) 查找字符串s中首次出现字符c的位置

    如果找到指定的字符则返回该字符所在地址,否则返回 NULL。

    8.strrchr(s, c) 在字符串中反向查找

    9.strstr(p, p1) 查找字符串

    • 字符串检查

    1. isalpha()检查是否为字母字符
    2.isupper() 检查是否为大写字母字符
    3.islower() 检查是否为小写字母字符
    4.isdigit() 检查是否为数字
    5.isxdigit() 检查是否为十六进制数字表示的有效字符
    6.isspace() 检查是否为空格类型字符
    7.iscntrl() 检查是否为控制字符
    8.ispunct() 检查是否为标点符号
    9.isalnum() 检查是否为字母和数字
    10.isprint() 检查是否是可打印字符
    11.isgraph() 检查是否是图形字符




    展开全文
  • C语言字符串操作函数.docx
  • C语言常用字符串操作函数整理(详细全面)

    千次阅读 多人点赞 2020-01-04 16:25:47
    char *gets(char *s); #include<stdio.h>...返回值: 成功:读入的字符串 失败:NULL gets(str)与scanf(“%s”,str)的区别: gets(str)允许输入的字符串含有空格 scanf(“%s”,str)不允许含有空...

    字符串相关

    1.char *gets(char *s);

    #include<stdio.h>

    功能:
      从标准输入读入字符,并保存到s指定的内存空间,直到出现换行符或读到文件结尾为止
    参数:
      s:字符串首地址
    返回值:
      成功:读入的字符串
      失败:NULL

    gets(str)与scanf(“%s”,str)的区别:
      gets(str)允许输入的字符串含有空格
      scanf(“%s”,str)不允许含有空格
    注意:
      由于scanf()和gets()无法知道字符串s大小,必须遇到换行符或读到文件结尾为止才接收输入,因此容易导致字符数组越界(缓冲区溢出)的情况。

    举例:

    printf("请输入str: ");
    gets(str);
    printf("str = %s\n", str);
    

    2.char *fgets(char *s, intsize, FILE *stream);

    #include<stdio.h>

    功能:
      从stream指定的文件内读入字符,保存到s所指定的内存空间,直到出现换行字符、读到文件结尾或是已读了size - 1个字符为止,最后会自动加上字符 ‘\0’ 作为字符串结束

    参数:
      s:字符串
      size:指定最大读取字符串的长度(size - 1)
      stream:文件指针,如果读键盘输入的字符串,固定写为stdin

    返回值:
      成功:成功读取的字符串
      读到文件尾或出错: NULL
    描述:
      fgets()在读取一个用户通过键盘输入的字符串的时候,同时把用户输入的回车也做为字符串的一部分。通过scanf和gets输入一个字符串的时候,不包含结尾的“\n”,但通过fgets结尾多了“\n”。fgets()函数是安全的,不存在缓冲区溢出的问题。

    举例:

    char str[100];
    printf("请输入str: ");
    fgets(str, sizeof(str), stdin);
    printf("str = \"%s\"\n", str);
    

    3.int puts(const char *s);

    #include<stdio.h>

    功能:
      标准设备输出s字符串,在输出完成后自动输出一个’\n’。

    参数:
      s:字符串首地址。

    返回值:
      成功:非负数
      失败:-1
    举例:

    #include <stdio.h>
    int main()
    {
        printf("hello world");
        puts("hello world");
    
        return 0;
    }
    

    4.int fputs(const char *str, FILE *stream);

    #include<stdio.h>

    功能:
      将str所指定的字符串写入到stream指定的文件中,字符串结束符’\0’不写入文件。

    参数:
      str:字符串
      stream:文件指针,如果把字符串输出到屏幕,固定写为stdout。

    返回值:
      成功:0
      失败:-1
    注意:
      fputs()是puts()的文件操作版本,但fputs() 不会自动输出一个’\n’。

    举例:

    printf("hello world");
    puts("hello world");
    fputs("hello world", stdout);
    

    5. size_t strlen(const char *s);

    #include<string.h>

    功能:
      计算指定指定字符串s的长度,不包含字符串结束符‘\0’.

    参数:
       s:字符串首地址

    返回值:
       字符串s的长度,size_t 为unsigned int类型

    举例:

    char str[] = "abcdefg";
    int n = strlen(str);
    printf("n = %d\n", n);
    

    6. char *strcpy(char *dest, const char *src);

    #include<string.h>

    功能:
      把src所指向的字符串复制到dest所指向的空间中,’\0’也会拷贝过去

    参数:
      dest:目的字符串首地址
      src:源字符首地址

    返回值:
      成功:返回dest字符串的首地址
      失败:NULL
      注意: 如果参数dest所指的内存空间不够大,可能会造成缓冲溢出的错误情况。

    举例:

    char dest[20] = "123456789";
    char src[] = "hello world";
    strcpy(dest, src);
    printf("%s\n", dest);
    

    7. char *strncpy(char *dest, const char *src, size_tn);

    #include<string.h>

    功能:
      把src指向字符串的前n个字符复制到dest所指向的空间中,是否拷贝结束符看指定的长度是否包含’\0’。

    参数:
      dest:目的字符串首地址
      src:源字符首地址
      n:指定需要拷贝字符串个数

    返回值:
      成功:返回dest字符串的首地址
      失败:NULL

    举例:

    char dest[20] ;
    char src[] = "hello world";
    
    strncpy(dest, src, 5);
    printf("%s\n", dest);
    
    dest[5] = '\0';
    printf("%s\n", dest);
    

    8. char *strcat(char *dest, const char *src);

    #include<string.h>

    功能:
      将src字符串连接到dest的尾部,‘\0’也会追加过去

    参数:
      dest:目的字符串首地址
      src:源字符首地址

    返回值:
      成功:成功:返回dest字符串的首地址
      失败:NULL

    举例:

    char str[20] = "123";
    char *src = "hello world";
    printf("%s\n", strcat(str, src));
    

    9. char *strncat(char *dest, const char *src, size_tn);

    #include<string.h>

    功能:
      将src字符串前n个字符连接到dest的尾部,‘\0’也会追加过去

    参数:
      dest:目的字符串首地址
      src:源字符首地址
      n:指定需要追加字符串个数

    返回值:
      成功:成功:返回dest字符串的首地址
      失败:NULL

    举例:

    char str[20] = "123";
    char *src = "hello world";
    printf("%s\n", strncat(str, src, 5));
    

    10. int strcmp(const char *s1, const char *s2);

    #include<string.h>

    功能:
       比较 s1 和 s2 的大小,比较的是字符ASCII码大小。

    参数:
      s1:字符串1首地址
      s2:字符串2首地址
    返回值:
      相等:0
      大于:>0
      小于:<0
    举例:

    char *str1 = "hello world";
    char *str2 = "hello mike";
    
    if (strcmp(str1, str2) == 0)
    {
        printf("str1==str2\n");
    }
    elseif (strcmp(str1, str2) > 0)
    {
        printf("str1>str2\n");
    }
    else
    {
        printf("str1<str2\n");
    }
    

    11. int strncmp(const char *s1, const char *s2, size_tn);

    #include<string.h>

    功能:
       比较 s1 和 s2 前n个字符的大小,比较的是字符ASCII码大小。

    参数:
      s1:字符串1首地址
      s2:字符串2首地址
      n:指定比较字符串的数量

    返回值:
      相等:0
      大于:>0
      小于:<0
    举例:

    char *str1 = "hello world";
    char *str2 = "hello mike";
    
    if (strncmp(str1, str2, 5) == 0)
    {
        printf("str1==str2\n");
    }
    elseif (strcmp(str1, "hello world") > 0)
    {
        printf("str1>str2\n");
    }
    else
    {
        printf("str1<str2\n");
    }
    

    12. int sprintf(char *str , const char *format, …);

    #include<stdio.h>

    功能:
      根据参数format字符串来转换并格式化数据,然后将结果输出到str指定的空间中,直到出现字符串结束符 ‘\0’ 为止。

    参数:
      str:字符串首地址
      format:字符串格式,用法和printf()一样

    返回值:
      成功:实际格式化的字符个数
      失败: - 1

    举例:

    char dst[100] = { 0 };
    int a = 10;
    char src[] = "hello world";
    printf("a = %d, src = %s", a, src);
    printf("\n");
    int len = sprintf(dst, "a = %d, src = %s", a, src);
    printf("dst = \" %s\"\n", dst);
    printf("len = %d\n", len);
    

    13. int sscanf(const char *str, const char *format, …);

    #include<stdio.h>

    功能:
      从str指定的字符串读取数据,并根据参数format字符串来转换并格式化数据。

    参数:
      str:指定的字符串首地址
      format:字符串格式,用法和scanf()一样

    返回值:
      成功:参数数目,成功转换的值的个数
      失败: - 1

    举例:

    char src[] = "a=10, b=20";
    int a;
    int b;
    sscanf(src, "a=%d,  b=%d", &a, &b);
    printf("a:%d, b:%d\n", a, b);
    

    14. char *strchr(const char *s, intc);

    #include<string.h>

    功能: 在字符串s中查找字母c出现的位置。

    参数:
      s:字符串首地址
      c:匹配字母(字符)

    返回值:
      成功:返回第一次出现的c地址
      失败: NULL

    举例:

    char src[] = "ddda123abcd";
    char *p = strchr(src, 'a');
    printf("p = %s\n", p);
    

    15. char *strstr(const char *haystack, const char *needle);

    #include<string.h>

    功能:
      在字符串haystack中查找字符串needle出现的位置。

    参数:
      haystack:源字符串首地址
      needle:匹配字符串首地址

    返回值:
      成功:返回第一次出现的needle地址
      失败: NULL

    举例:

    char src[] = "ddddabcd123abcd333abcd";
    char *p = strstr(src, "abcd");
    printf("p = %s\n", p);
    

    16.size_t strspn(const char* str1, const char* str2)

    #include<string.h>

    功能
      用来计算str1字符串开始部分匹配str2字符串的字符个数
    返回值
      返回字符串str1开头连续包含字符串str2内的字符数目。如果str所包含的字符都属于str2,那么返回str1的长度。如果str的第一个字符不属于str2,那么返回0

    17.size_t strspn(const char* str1, const char* str2)

    功能
      用来计算str1字符串开始部分不匹配str2字符串的字符个数
    返回值
      返回字符串str1开头部分不出现在字符串str2内的字符数目。

    18. char *strtok(char *str, const char *delim);

    #include<string.h>

    功能:
      来将字符串分割成一个个片段。当strtok()在参数s的字符串中发现参数delim中包含的分割字符时, 则会将该字符改为\0 字符,当连续出现多个时只替换第一个为\0。

    参数:
      str:指向欲分割的字符串
      delim:为分割字符串中包含的所有字符

    返回值:
      成功:分割后字符串首地址
      失败: NULL

    举例:

    int main(void)
    {
        char input[16]="abc,d";
        char*p;
        /*strtok places a NULL terminator
        infront of the token,if found*/
        p=strtok(input,",");
        if(p)
            printf("%s\n",p);
            /*Asecond call to strtok using a NULL
            as the first parameter returns a pointer
            to the character following the token*/
        p=strtok(NULL,",");
        if(p)
            printf("%s\n",p);
        return 0;
    }
    

    19. int atoi(const char *nptr);

    #include<stdlib.h>

    功能:
      atoi()会扫描 nptr字符串, 跳过前面的 空格字符,直到遇到 数字或 正负号才开始做 转换,而遇到 非数字或 字符串结束符(’\0’)才 结束转换,并将结果返回 返回值。

    参数:
      nptr:待转换的字符串

    返回值:
      成功:转换后整数
      类似的函数有:
      atof():把一个小数形式的字符串转化为一个浮点数。
      atol():将一个字符串转化为long类型

    举例:

    char str1[] = "-10";
    int num1 = atoi(str1);
    printf("num1 = %d\n", num1);
    char str2[] = "0.123";
    double num2 = atof(str2);
    printf("num2 = %lf\n", num2);
    

    20.long int strtol(const char *nptr,char **endptr,int base);;

    #include<stdlib.h>

    功能:
      strtol函数会将参数nptr字符串根据参数base来转换成长整型数,参数base范围从2至36。
    参数:
      nptr:待转换的字符串
      endptr:是一个指针的地址,该指针被设置为标识输入数字结束字符的地址
      base:表示以什么进制写入数字

    返回值:
      该函数返回转换后的长整数,如果没有执行有效的转换,则返回一个零值。
      类似的函数有:
      strtoul():把字符串转换成unsigned 1ong类型的值
      strtod():把字符串转换成double类型的值

    举例:

    #include<stdio.h>
    #include<stdlib.h>
    #define LIM 30
    char *s_gets(char*st,int n);
    
    int main()
    {
        char number[LIM];
        char *end;
        long value;
        puts("Enter a number(empty line to quit):");
        while(s_gets(number,LIM)&&number[0]!='\0')
            value=strtol(number,&end,10);/*十进制*/
        printf("base 10 input,base 10 output:%1d,stopped at %s(%d)\n",value,end,*end);
        value=strtol(number,&end,16);/*十六进制*/
        printf("base 16 input,base 10 output:%1d,stopped at %s(%d)\n",value,end,*end);
        puts("Next number:");
        puts("Bye!\n");
        return 0;
    }
    
    char*s gets(char*st,int n)
    {
        char* ret_val;
        int i=0;
        ret val=fgets(st,n,stdin);
        if (ret_val)
            while (st[i]l='\n'&& st[i]!='\0')
                i++;
        if(st[i] =='\n')
                st[i]='\0';
        else
            while (getchar()!='\n')
                  continue;
        return ret_val;
    }
    
    

    下面是该程序的输出示例:
    Enter a number(empty line to quit):
    10
    base 10 input,base 10 output:10,stopped at(0)
    base 16 input,base 10 output:16,stopped at(0)
    Next number:
    10atom
    base 10 input,base 10 output:10,stopped at atom(97)
    base 16 input,base 10 output:266,stopped at tom (116)
    Next number:

    Bye!
      首先注意,当base分别为10和16时,字符串"10"分别被转换成数字10和16。还要注意,如果end指向一个字符,*end就是一个字符。因此,第1次转换在读到空字符时结束,此时end指向空字符。打印end会显示一个空字符串,以%d转换说明输出end显示的是空字符的ASCIl码。
      对于第2个输入的字符串,当base为10时,end的值是’a’字符的地址所以打印end显示的是字符串“atom”,打印
    end显示的是’a’字符的ASCIl码。然而,当base为16时,'a’字符被识别为一个有效的十六进制数,strtol()函数把十六进制数10a转换成十进制数266。
      strtol()函数最多可以转换三十六进制,‘a’~'z’字符都可用作数字。strtoul()函数与该函数类似,但是它把字符串转换成无符号值。strtod()函数只以十进制转换,因此它值需要两个参数。
      许多实现使用itoa()和ftoa()函数分别把整数和浮点数转换成字符串。但是这两个函数并不是C标准库的成员,可以用sprintf()函数代替它们,因为sprintf()的兼容性更好。
      数字既能以字符串形式储存,也能以数值形式储存。把数字储存为字符串就是储存数字字符。例如,数字213以‘2’、’1’、3’、‘\0’的形式被储存在字符串数组中。以数值形式储存213,储存的是int类型的值。
      C要求用数值形式进行数值运算(如,加法和比较)。但是在屏幕上显示数字则要求字符串形式,因为屏幕显示的是字符。printf()和sprintf()函数,通过%d和其他转换说明,把数字从数值形式转换为字符串形式,scanf()可以把输入字符串转换为数值形式。C还有一些函数专门用于把字符串形式转换成数值形式。
      假设你编写的程序需要使用数值命令形参,但是命令形参数被读取为字符串。因此,要使用数值必须先把字符串转换为数字。如果需要整数,可以使用atoi()函数(用于把字母数字转换成整数),该函数接受一个字符串作为参数,返回相应的整数值。

    字符分类函数

    int isalnum(int c):检查字符是否为数字或字母;(0~9,a~z,A~Z) 
    int isalpha(int c):检查字符是否为字母;(a~z, A~Z) 
    int iscntrl(int c):检查字符是否为控制字符;(八进制000~037以及177的字符) 
    int isdigit(int c):检查字符是否为十进制数字;(0~9) 
    int isgraph(int c):检查字符是否为图形表示,依赖于使用语言的环境;0~9,a~z,A~Z,以及标点符号) 
    int islower(int c):检查字符是否为小写的字母;(a~z) 
    int isprint(int c):检查字符是否为可打印的;(数字、字母、标点符号、空白字符) 
    int ispunct(int c):检查字符是否为标点符号;(! ” # $ % &( ) * + , - . / : ; < = > ? @ [ ] ^ _ ` { | } ~) 
    int isspace(int c):检查字符是否为空白字符;(TAB、换行、垂直TAB、换页、回车、空格) 
    int isupper(int c):检查字符是否为大写字母;(A~Z) 
    int isxdigit(int c):检查字符是否为十六进制数字;(0 1 2 3 4 5 6 7 8 9 A B C D E F a b c d e f) 
    

    字符转换

    int tolower(int c):转化字符为小写字母; 
    int toupper(int c):转化字符为大写字母;
    
    展开全文
  • 主要介绍了C语言 字符串首字母转换成大写简单实例的相关资料,需要的朋友可以参考下
  • C 语言字符串操作大全 C 语言字符串操作大全 C 语言字符串操作大全 C 语言字符串操作大全 C 语言字符串操作大全 C 语言字符串操作大全 C 语言字符串操作大全
  • C语言字符串函数大全C/C++基础 函数名: stpcpy 功 能: 拷贝一个字符串到另一个 用 法: char *stpcpy(char *destin, char *source); 程序例: #include <stdio.h> #include <string.h> int main(void) ...
  • c语言字符串操作大全

    2010-11-28 10:58:32
    c语言字符串个函数操作大全 函数名: stpcpy 功 能: 拷贝一个字符串到另一个 函数名: strcat 功 能: 字符串拼接函数 用 法: char *strcat(char *destin, char *source); 函数名: strchr 功 能: 在一个串中...
  • C语言 字符串切割

    2021-05-19 08:46:08
    #include #include #include /* 字符串切割函数 *//*知识补充:1. 函数原型:char *strtok(char *str, const char *delim);char *strsep(char **stringp, const char *delim);2. 功能:strtok和strsep两个函数的功能都...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,448,810
精华内容 579,524
关键字:

c字符串操作

友情链接: AUTO112.zip