zoukankan      html  css  js  c++  java
  • C基础学习笔记——01-C基础第07天(字符串处理函数和函数)

    在学习C基础总结了笔记,并分享出来。有问题请及时联系博主:Alliswell_WP,转载请注明出处。

    01-C基础第07天(字符串处理函数和函数)

    目录:
    一、字符串处理函数
    (1)gets()(2)fgets()(3)puts()(4)fputs()(5)strlen()(6)strcpy()(7)strncpy()(8)strcat()(9)strncat()(10)strcmp()(11)strncmp()(12)sprintf()(13)sscanf()(14)strchr()(15)strstr()(16)strtok()(17)atoi()
    二、函数
    多文件(分文件)编程

    一、字符串处理函数

    (1)gets()

    1 #include <stdio.h>
    2 char *gets(char *s);
    3 功能:从标准输入读入字符,并保存到s指定的内存空间,直到出现换行符或读到文件结尾为止。
    4 参数:
    5     s:字符串首地址
    6 返回值:
    7     成功:读入的字符串
    8     失败:NULL

    gets(str)与scanf(“%s”,str)的区别
    1)gets(str)允许输入的字符串含有空格
    2)scanf(“%s”,str)不允许含有空格

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

    (2)fgets()

     1 #include <stdio.h>
     2 char *fgets(char *s, int size, FILE *stream);
     3 功能:从stream指定的文件内读入字符,保存到s所指定的内存空间,直到出现换行字符、读到文件结尾或是已读了size - 1个字符为止,最后会自动加上字符 '' 作为字符串结束。
     4 参数:
     5     s:字符串
     6     size:指定最大读取字符串的长度(size - 1 7     stream:文件指针,如果读键盘输入的字符串,固定写为stdin
     8 返回值:
     9     成功:成功读取的字符串
    10     读到文件尾或出错: NULL

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

    (3)puts()

    1 #include <stdio.h>
    2 int puts(const char *s);
    3 功能:标准设备输出s字符串,在输出完成后自动输出一个'
    '4 参数:
    5     s:字符串首地址
    6 返回值:
    7     成功:非负数
    8     失败:-1

    (4)fputs()

    1 #include <stdio.h>
    2 int fputs(const char * str, FILE * stream);
    3 功能:将str所指定的字符串写入到stream指定的文件中, 字符串结束符 ''  不写入文件。 
    4 参数:
    5     str:字符串
    6     stream:文件指针,如果把字符串输出到屏幕,固定写为stdout
    7 返回值:
    8     成功:0
    9     失败:-1

    fputs()是puts()的文件操作版本,但fputs()不会自动输出一个' '。

    (5)strlen()

    1 #include <string.h>
    2 size_t strlen(const char *s);
    3 功能:计算指定指定字符串s的长度,不包含字符串结束符‘04 参数:
    5 s:字符串首地址
    6 返回值:字符串s的长度,size_t为unsigned int类型

    (6)strcpy()

    1 #include <string.h>
    2 char *strcpy(char *dest, const char *src);
    3 功能:把src所指向的字符串复制到dest所指向的空间中,''也会拷贝过去
    4 参数:
    5     dest:目的字符串首地址
    6     src:源字符首地址
    7 返回值:
    8     成功:返回dest字符串的首地址
    9     失败:NULL

    注意:如果参数dest所指的内存空间不够大,可能会造成缓冲溢出的错误情况。

    (7)strncpy()

     1 #include <string.h>
     2 char *strncpy(char *dest, const char *src, size_t n);
     3 功能:把src指向字符串的前n个字符复制到dest所指向的空间中,是否拷贝结束符看指定的长度是否包含'' 4 参数:
     5     dest:目的字符串首地址
     6     src:源字符首地址
     7     n:指定需要拷贝字符串个数
     8 返回值:
     9     成功:返回dest字符串的首地址
    10     失败:NULL

    (8)strcat()

    1 #include <string.h>
    2 char *strcat(char *dest, const char *src);
    3 功能:将src字符串连接到dest的尾部,‘0’也会追加过去
    4 参数:
    5     dest:目的字符串首地址
    6     src:源字符首地址
    7 返回值:
    8     成功:返回dest字符串的首地址
    9     失败:NULL

    (9)strncat()

     1 #include <string.h>
     2 char *strncat(char *dest, const char *src, size_t n);
     3 功能:将src字符串前n个字符连接到dest的尾部,‘0’也会追加过去
     4 参数:
     5     dest:目的字符串首地址
     6     src:源字符首地址
     7     n:指定需要追加字符串个数
     8 返回值:
     9     成功:返回dest字符串的首地址
    10     失败:NULL

    (10)strcmp()

     1 #include <string.h>
     2 int strcmp(const char *s1, const char *s2);
     3 功能:比较 s1 和 s2 的大小,比较的是字符ASCII码大小。
     4 参数:
     5     s1:字符串1首地址
     6     s2:字符串2首地址
     7 返回值:
     8     相等:0
     9     大于:>0
    10     小于:<0

    (11)strncmp()

     1 #include <string.h>
     2 int strncmp(const char *s1, const char *s2, size_t n);
     3 功能:比较 s1 和 s2 前n个字符的大小,比较的是字符ASCII码大小。
     4 参数:
     5     s1:字符串1首地址
     6     s2:字符串2首地址
     7     n:指定比较字符串的数量
     8 返回值:
     9     相等:0
    10     大于: > 0
    11     小于: < 0

    (12)sprintf()

    1 #include <stdio.h>
    2 int sprintf(char *str, const char *format, ...);
    3 功能:根据参数format字符串来转换并格式化数据,然后将结果输出到str指定的空间中,直到出现字符串结束符 ''  为止。
    4 参数:
    5     str:字符串首地址
    6     format:字符串格式,用法和printf()一样
    7 返回值:
    8     成功:实际格式化的字符个数
    9     失败: - 1

    (13)sscanf()

    1 #include <stdio.h>
    2 int sscanf(const char *str, const char *format, ...);
    3 功能:从str指定的字符串读取数据,并根据参数format字符串来转换并格式化数据。
    4 参数:
    5     str:指定的字符串首地址
    6     format:字符串格式,用法和scanf()一样
    7 返回值:
    8     成功:参数数目,成功转换的值的个数
    9     失败: - 1

    (14)strchr()

    1 #include <string.h>
    2 char *strchr(const char *s, int c);
    3 功能:在字符串s中查找字母c出现的位置
    4 参数:
    5     s:字符串首地址
    6     c:匹配字母(字符)
    7 返回值:
    8     成功:返回第一次出现的c地址
    9     失败:NULL

    (15)strstr()

    1 #include <string.h>
    2 char *strstr(const char *haystack, const char *needle);
    3 功能:在字符串haystack中查找字符串needle出现的位置
    4 参数:
    5     haystack:源字符串首地址
    6     needle:匹配字符串首地址
    7 返回值:
    8     成功:返回第一次出现的needle地址
    9     失败:NULL

    (16)strtok()

    1 #include <string.h>
    2 char *strtok(char *str, const char *delim);
    3 功能:来将字符串分割成一个个片段。当strtok()在参数s的字符串中发现参数delim中包含的分割字符时, 则会将该字符改为0 字符,当连续出现多个时只替换第一个为04 参数:
    5     str:指向欲分割的字符串
    6     delim:为分割字符串中包含的所有字符
    7 返回值:
    8     成功:分割后字符串首地址
    9     失败:NULL

    (17)atoi()

    1 #include <stdlib.h>
    2 int atoi(const char *nptr);
    3 功能:atoi()会扫描nptr字符串,跳过前面的空格字符,直到遇到数字或正负号才开始做转换,而遇到非数字或字符串结束符('')才结束转换,并将结果返回返回值。
    4 参数:
    5     nptr:待转换的字符串
    6 返回值:成功转换后整数

    类似的函数有:
     atof():把一个小数形式的字符串转化为一个浮点数。
     atol():将一个字符串转化为long类型

    二、函数

    从函数定义的角度看,函数可分为系统函数和用户定义函数两种:

    (1)系统函数,即库函数:这是由编译系统提供的,用户不必自己定义这些函数,可以直接使用它们,如我们常用的打印函数printf()。

    (2)用户定义函数:用以解决用户的专门需要。

    多文件(分文件)编程

    防止头文件重复包含?

    为了避免同一个文件被include多次,C/C++中有两种方式,一种是 #ifndef 方式,一种是 #pragma once 方式。

    方法一:

    1 #ifndef __SOMEFILE_H__
    2 #define __SOMEFILE_H__
    3 
    4 // 声明语句
    5 
    6 #endif

    方法二:

    1 #pragma once
    2 
    3 // 声明语句

    在学习C基础总结了笔记,并分享出来。有问题请及时联系博主:Alliswell_WP,转载请注明出处。

  • 相关阅读:
    Java修饰符/关键字
    深入理解Java面向对象三大特性 封装 继承 多态
    BUG为什么越改越多,越改越乱
    DDMS调试Virtual Box android虚拟机
    android开发之android虚拟机配置
    使用cordova 出现Error: The provided path is not Android project.
    Javascript与Flex AS3的交互
    [Ljava.lang.String; cannot be cast to java.lang.String错误
    使用Flex4的PopUpManager的addPopUp() 方法弹出 removeChild异常的解决办法
    Flex 4 不同主题下容器子元素的管理方法
  • 原文地址:https://www.cnblogs.com/Alliswell-WP/p/C_BasicLearning_07.html
Copyright © 2011-2022 走看看