精华内容
下载资源
问答
  • C语言常用字符串函数 以下函数都在头文件 string.h 中 (1)strcpy()字符串复制函数 函数原型:char *strcpy(char *d ,char *s) 功能:复制字符串s到字符串d ,返回字符串d 当我们用 ’ = ‘号单独给字符串赋值是不...

    C语言常用的字符串函数

    以下函数都在头文件 string.h
    (1)strcpy()字符串复制函数
    函数原型:char *strcpy(char *d ,char *s)
    功能:复制字符串s到字符串d ,返回字符串d
    当我们用 ’ = ‘号单独给字符串赋值是不可以的(这里不是边定义边赋值)。但是用strcpy()函数就可以。
    例:
    在这里插入图片描述
    (2)strcat()字符串连接函数
    函数原型: char *strcat(char *d ,char *s)
    功能:连接字符串s 到字符串 d ,字符串d的 ’ \0 ’ 取消只在新的字符串后保留一个’ \0’ 。返回字符串d.
    例:
    在这里插入图片描述
    (3)strcmp()字符串比较函数
    函数原型:int strcmp(char *d, char *s)
    功能:比较字符串 d 和 s的大小, 如果d>s 返回1 如果d=s返回 0 如果d<s返回 -1

    实现原理:该函数也是需要传入两个字符串的名称的,然后同时遍历两个字符串,每次都分别从这两个字符串中取出一个字符,
    再比较这两个字符的ASCII码,如果从字符串1中取出的字符的ASCII码比从字符串2中取出的ASCII码要大,那么该函数就会返回 1,
    如果小的话该函数就会返回 -1,如果取到了两个字符串的最后一个字符,每一个字符的ASCII码都是相等的,那么该函数就会返回 0。
    例:
    在这里插入图片描述

    展开全文
  • 格式化输入字符串、数字、字符 注意事项:   1:接收换行结束,可以通过%[^\n]接收空格 2:在scanf获取数据时,建议不要添加任何字符(空格除外) 3:有限定字符宽度的格式化 scanf("%1d%2d",&a,&b) 4:...

    scanf()

    格式化输入字符串、数字、字符
    

    注意事项:

     

    1:接收换行结束,可以通过%[^\n]接收空格
    2:在scanf获取数据时,建议不要添加任何字符(空格除外)
    3:有限定字符宽度的格式化      scanf("%1d%2d",&a,&b)
    4:屏蔽数据类型  %*d p  屏蔽数字  %*c屏蔽字符
    5:屏蔽一个区间之内的字符   %*[a-z]%c
    

    printf()

    格式化输出字符串、数字、字符
    

    注意事项:

    %5d   五位数,不足在前面补空格,多于5位正常显示
    %05d   五位数,不足在前面补0
    %.2f   截取两位小数,默认6位
    %.4s  截取前四个字符
    %-5d  左对齐
    

     

    gets()

    char*gets(char*s)
    

    功能:

    从标准输入读入字符,并保存到s指定的内存空间,直到遇到'\0'或读到文件结尾为止
    

    参数:

    s:字符串首地址
    

    返回值:

    成功:读入字符串
    

    失败:NULL

    例:

    char arr[100];
    	gets(arr);    输入
    	puts(arr);     输出
    

    gets(str)与scanf("%s",str)的区别

    gets(str)允许输入的字符串含有空格
    

    scanf("%s",str)不允许含有空格

    注意:由于scanf()和gets()无法知道字符串s大小,必须遇到换行符或读到文件结尾为止才接收输入,因此容易导致字符数组越界的情况

    puts()

    int puts(const char* str)
    

    功能:

    标准设置输出字符串,在输出完成后自动输出一个‘\n'
    

    参数:

    str:字符串首地址
    

    返回值:

    成功:非负数
    

    失败:-1

     

    fgets()

    char* fgets(char* s,int size,FILE*stream)
    

    功能:

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

    参数:

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

     

    返回值:

    成功:成功读取到字符串
    

    读到文件尾或出错:NULL

    例:

    char str[10];
    fgets(str, 10, stdin);
    puts(str);
    

    fgets()在读取一个用户通过键盘输入的字符串的时候,同时把用户输入的回车也作为字符串的一部分,通过scanf()和gets输入一个字符串的时候,不包含结尾的”\n”,但通过fgets()结尾多了“\n”,fgets()函数是安全的,不存在缓冲区溢出的问题

    fputs()

    int fputs(const char* str,FILE* stream)
    

    功能:

    将str所指定的字符串写入到stream指定的文件中,字符串结束符“\0"不写入文件
    

    参数:

    str:字符串
    

    stream:文件指针,直接输出固定写为stdout

    返回值:

    该函数返回一个非负值,如果发生错误则返回 EOF
    

    例:

    char str[10];
    	fgets(str, 10, stdin);
    	fputs(str, stdout);
    

    strlen

    size_t strlen(const char* s)           头文件  <string.h>
    

    功能:

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

    参数:

    s:字符串首地址
    

    返回值:

    字符串s的长度,size_t为unsingned int类型
    

    strcpy()

    char* strcpy(char* dest,const char* src)       头文件<string.h>
    

    功能:

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

    参数:

    dest:目的字符串首地址
    

    src:原字符首地址

    返回值:

    成功:返回dest字符串的首地址
    

    失败:NULL

    如果dest空间不够大,会导致内存泄露

    strncpy()

    char* strncpy(char*dest,const char*src,size_t n)     头文件<string.h>
    

    功能:

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

    参数:

    dest:目的字符串首地址
    

    src:原字符首地址

    n:指定需要拷贝字符串个数

    返回值:

    成功:返回dest字符串的首地址
    

    失败:NULL

    strcat()

    char* strcat(char*dest,const char* src)     头文件<string.h>
    

    功能:

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

    参数:

    dest:目的字符串首地址
    

    src:原字符首地址

    返回值:

    成功:返回dest字符串的首地址
    

    失败:NULL

    strncat()

    char* strcat(char*dest,const char* src,size_t n)     头文件<string.h>
    

    功能:

    将src字符串前n个字符连接到dest的尾部,有限追加‘\0’也会拷贝过去
    

    参数:

    dest:目的字符串首地址
    

    src:原字符首地址

    n:指定需要拷贝字符串个数

    返回值:

    成功:返回dest字符串的首地址
    

    失败:NULL

    strcmp()

    int strcmp(const char*s1,const char*s2)             头文件<string.h>
    

    功能:

    比较s1和s2大小,比较的时字符ASCII码大小
    

    参数:

    s1:字符串1首地址
    

    s2:字符串2首地址

    返回值:

    相等:0
    

    大于:>0

    小于:<0

    strncmp()

    int strcmp(const char*s1,const char*s2,size_t n)             头文件<string.h>
    

    功能:

    比较s1和s2前n个字符大小,比较的时字符ASCII码大小
    

    参数:

    s1:字符串1首地址
    

    s2:字符串2首地址
    n:比较字符串前n个值

    返回值:

    相等:0
    

    大于:>0

    小于:<0

    sprintf()

    int sprintf(char*str,const char*format,...);    头文件  <stdio.h>
    

    功能:

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

    参数:

    str:字符串首地址
    

    format:字符串格式,用法和printf()一样

    返回值:

    成功:实际格式化的字符个数
    

    失败:-1

    例:

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdlib.h>
    #include<stdio.h>
    int main()
    {
    	char arr[100];
    	int a=10, b=20;
    	sprintf(arr, "%d+%d=", a, b);
    	//输出结果为10+20=
    	puts(arr);
    
    return EXIT_SUCCESS;
    

    }

     

    sscanf()

    int sscanf(const char*str,const char*format,...)       头文件  <stdio.h>
    

    功能:

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

    参数:

    str:指定的字符串首地址
    

    format:字符串格式,用法和scanf()一样

    返回值:

    成功:参数数目,成功转换的值的个数
    

    失败:-1

    例:

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdlib.h>
    #include<stdio.h>
    int main()
    {
    	char arr[100]= "10+20=";;
    
    int c,d;
    char z;
    
    sscanf(arr, &quot;%d%c%d=&quot;, &amp;c, &amp;z, &amp;d);
    //输出结果为 10+20
    printf(&quot;%d%c%d\n&quot;, c, z, d);
    return EXIT_SUCCESS;
    

    }

    strchr()

    char* strchr(const char*s ,int c)                    头文件<string.h>
    

    功能:

    在字符串s中查找字母c出现的位置
    

    参数:

    s:字符串首地址
    

    c:匹配字母(字符)

    返回值:

    成功:返回c第一次出现的地址
    

    失败:NULL

     

    strstr()

    char*strstr(const char*haystack,const char*needle)               头文件<string.h>
    

    功能:

    在字符串haystack中查找字符串needle出现的位置
    

    参数:

    haystack:原字符串首地址
    

    needle:匹配字符串首地址

    返回值:

    成功:返回needle第一次出现的地址
    

    失败:NULL

    strtok()

    char*strtok(char*str,const char*delim)               头文件<string.h>
    

    功能:

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

    参数:

    str:指向欲分割的字符串
    

    delim:为分割字符串

    返回值:

    成功:分割后字符串首地址
    

    失败:NULL

    在第一次调用时:strtok()必须给与参数str字符串
    
    往后的调用则将参数str设置成NULL,每次调用成功则返回指向被分割出片段的指针
    

    例:

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdlib.h>
    #include<stdio.h>
    #include<string.h>
    int main()
    {
    	char arr[100]="www.baidu.com";
    	const char arr2[2] = ".";
    	char* p=strtok(arr, arr2);
    
    while (p != NULL)
    {
    	printf(&quot;%s\n&quot;, p);
    	p = strtok(NULL, arr2);
    }
    return EXIT_SUCCESS;
    

    }

    atoi()

    int atoi(const char*nptr)               头文件<stdlib.h>
    

    功能:

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

    参数:

    nptr:待转换的字符串
    

    返回值:

    成功转换后整数
    

    类似的函数有:

    atof():把一个小数形式的字符串转化为一个浮点数
    

    atol():将一个字符串转化为long类型

    例:

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdlib.h>
    #include<stdio.h>
    int main()
    {
    	char arr[100]="  980ab";
    	int a=atoi(arr);
    	printf("%d\n", a);
    	return EXIT_SUCCESS;
    }
    

     

    展开全文
  • 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语言常用数字和字符串转换函数,toi 字符串转换成整型数 atol 字符串转换成长整型数 atof 字符串转换成浮点型数 strtol 字符串转换成长整型数 strtoul 字符串转换成无符号长整型数 strtod 字符串转换成浮点数
  • c语言字符串常用函数

    2020-11-29 13:55:10
    1. strcat函数字符串连接函数。 #include"stdio.h" #include"string.h" //为了引用strcat函数。 int main() { char str1[30]={"hello "},str2[]={"word."}; printf("%s",strcat(str1,str2)); //strcat(a字符...

    1. strcat函数–字符串连接函数

    #include"stdio.h"
    #include"string.h"   //为了引用strcat函数。 
    int main()
    {
    	char str1[30]={"hello "},str2[]={"word."};
    	printf("%s",strcat(str1,str2));      //strcat(a字符数组,b字符数组); 
    }        //strcat函数--字符串连接函数
             //a字符数组必须足够大,以便容纳后面的新字符串。 
    

    在这里插入图片描述

    2.strcpy和strncpy函数–字符串复制函数。

    #include<stdio.h>
    #include<string.h>  //为了使用strcpy和strncpy函数 
    int main()
    {
    	char str[20]={"1234567890"},a[]={"hello"},b[20],d[20]={"1234567890"};
    	strcpy(str,a);   //一般形式 strcpy(字符数组,字符串); 作用:将字符串复制到字符数组中去。
    	strcpy(b,"world");
    	strncpy(d,a,2); //作用 将a中最前面两个字符复制到字符数组d中,字符数组d后面的保持原样。 
    	puts(str);
    	puts(b); 
    	puts(d); 
     } 
    

    在这里插入图片描述
    3.strcmp函数–字符串比较函数

    #include<stdio.h>
    #include<string.h>    //strcmp(字符数组1,字符数组2);比较第一个不同字符的ASCII码 
    int main()           
    {
    	char a[]={"happy"},b[]={"help"},c[]={"happy"};
    	printf("%d\n",strcmp(a,b));     //'a' <'e' 函数值为负数 
    	printf("%d\n",strcmp(b,a));     
    	printf("%d\n",strcmp(a,c));   //全部字符相同  函数值为0 
    	
    } 
    

    在这里插入图片描述
    4.strlen函数–测字符串长度的函数。
    作用:测字符串长度
    函数值为字符串的实际长度(不包括’\0’)。

    #include"stdio.h"
    #include"string.h"
    int main()
    {
    	char a[10]={"12345"};
    	printf("%d\n",strlen(a));
    	printf("%d\n",strlen("he"));;
     } 
    

    在这里插入图片描述
    5.strlwr函数与strupr函数 --大小写字母转换函数

    #include"stdio.h"
    #include"string.h"
    int main()
    {
    	char a[]={"aBcDeFgH"};
    	puts(strlwr(a));   //strlwr函数 将字符串中的大写字母转换为小写。 
    	puts(strupr(a));   //strupr函数 将字符串中的小写字母转换为大写。 
    	
    	
    } 
    

    在这里插入图片描述

    展开全文
  • C语言常用字符串操作函数总结

    万次阅读 多人点赞 2017-03-09 20:30:11
    C语言常用字符串操作函数总结
  • 头文件:#include 功能:把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。返回指向dest的指针。函数实现: ...
  • C语言常用的6个字符串处理函数

    千次阅读 多人点赞 2020-02-24 09:31:13
    C语言文章更新目录 C/C++学习资源(百度云盘链接) 计算机二级资料(过级专用) C语言学习路线(从入门到实战) ...C语言中的输入输出函数 C语言流程控制语句 C语言数组——一维数组 C语言数组—...
  • C语言常用字符串处理函数(一)

    万次阅读 多人点赞 2016-02-28 11:51:44
    C语言常用字符串处理函数(一) 我们经常会遇到要用C语言来直接处理字符串,了解这些函数,编写起代码来能够事半功倍,这也是字符串处理的基础。
  • C语言实现常用字符串哈希函数,比如RSHash、JSHash、PJWHash、FNVHash等
  • 字符串处理函数 1.char *gets(char *s); 2.char *fgets(char *s, intsize, FILE *stream); 3.int puts(const char *s); 4.int fputs(const char *str, FILE *stream); 5.size_t strlen(const char *s); 6.ch.....
  • 各种C语言字符串函数,笔试面试过程中经常被问到的题目
  • 放在手边,需要的时候可以随时从中查找需要的函数
  • C语言中常见的字符串处理函数

    万次阅读 多人点赞 2017-01-11 23:50:27
    C语言中常见的字符串处理函数C语言中提供了大量丰富的字符串处理函数,大致可以分为字符串的输入,输出,合并,修改,比较,转换,复制,搜索几类。 用于输入输出的函数包含在stdio.h中而其他的字符串处理函数一般...
  • 在编写程序的过程中,我们经常使用到一些字符串函数,例如求字符串长度,拷贝字符串……,这些函数都在C标准库中存在,我们可以直接使用。但我们还需要掌握这些函数的实现方法,今天来看看一些常用的字符串操作函数...
  • C语言字符串处理函数整理版本,包含字符串基本操作,字符串类型转换、字符检查、输入输出流、输入输出流分割、异常处理等
  • 下面介绍8种基本的常用字符串处理函数,在数值数组中也常常用到(部分函数)。所有的C语言编译系统中一般都提供这些函数。 1、puts函数——输出字符串函数  一般的形式为puts(字符串组) 作用:将一个字符串...
  • 下面介绍8种基本的常用字符串处理函数,在数值数组中也常常用到(部分函数)。所有的C语言编译系统中一般都提供这些函数
  • C语言常用字符数组函数

    千次阅读 2020-07-22 22:27:27
    C语言中没有字符串类型,字符串是存放在字符型数组中,所以一般形式的字符串就是数组。 一般来说,大家都是使用sizeof来计算数组长度的: // 整型数组 int a[] = {1,2,3,4,5}; int length = sizeof(a)/sizeof(a...
  • c语言库函数 字符串 标准库字符串函数 (Standard Library String functions) Mostly, every C compiler provides a set of useful library functions for handling strings. Here is a list of more commonly used ...
  • C语言字符串处理函数strlen()

    千次阅读 2020-06-26 21:28:21
    C语言字符串处理函数strlen() C库提供了多个字符串处理函数,ANSI C把这些函数的原型放在string.h头文件中。其中最常用的有strlen()、strcat()、strcmp()、strncmp()、strcpy()和strncpy()。另外还有sprintf(),...
  • c语言字符串函数大全

    2011-01-18 09:49:57
    c语言字符串函数大全, 字符串处理相关的常用函数集合。
  • C语言字符数组常用函数实现

    千次阅读 2019-07-20 13:10:10
    C语言中字符数组的常用函数有以下几个: strlen(str):返回字符串str的长度; strcpy(str1,str2):将字符串str2复制到字符串str1中,并返回字符串str1; strchr(str,ch):返回在字符串str中第一次出现指定的字符ch的...
  • 该文档是本人自己整理的C语言中对字符串处理的一些系统api,,有些经常使用,有些不常使用,但是要是能够记住,相信肯定很有帮助
  • C语言字符串的初始化

    千次阅读 2021-03-19 14:27:23
    字符串是最常用的数据类型之一。 C语言中,是没有String类型来存储字符串的,字符串被看做是一组连续的char类型。 所以,字符串有两种表示方法,分别是字符数组和字符指针,而这两种表示的初始化却又不尽相同。 为了...
  • C语言实现字符串反转函数strrev的经典方法 分类: 玄之又玄代码空间 2012-10-29 15:59 6621人阅读 评论(7) 收藏 举报 C语言c语言strrev字符串反转 字符串反转函数strrev不是C语言标准库函数,很多C语言编译器...
  • C语言字符串测试函数总结 isxdigit函数int isxdigit(int c);函数说明:检查参数c是否为16进制数字,只要c为下列其中一个情况就检测成功。16进制数字:0123456789ABCDEF。返回值:若参数c为16进制数字,则返回非0,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 84,383
精华内容 33,753
关键字:

c语言常用字符串函数大全

c语言 订阅