• c语言笔记 数组2


    15. c99以前一直使用 gets 和 puts来输入输出字符串,但是gets因为无法获知内存大小,容易出现内存溢出(对此c99对gets,采取保留态势,c11直接废除,但是某些编译器仍然默认可以使用)。 gets会等待输入换行结束,但是gets返回的字符串却删除了换行符,对应的puts在末未添加了换行符。总之get put类函数,总是一行一行打印。fgets和fputs用来替代目前的函数,主要是定义了长度这个参数,还有第三个参数 stdio 和stdout(麻烦)。fgets 与gets不同,保留了用户输入的回车键,并在字符串末尾加上了‘/0’。fputs对应的不再加上换行符。特别的 fputs在目标内存满的时候,会返回空指针,这个特性使它应用起来要方便的多。对应的c11增加了 gets_s 和 s_gets两个函数,使字符串的情形更为复杂。gets_s:1.只能作为标准输入,不需要fgets第三个参数 2.丢弃换行符 3.内存溢出后,首先‘/0’替换首字符,丢弃以后的所有数据,直到出现换行符或者文件结尾,返回空指针。(what? 这些特性也造成了,该函数即便出错,用户也无法察觉)  s_gets :1.用空字符替代换行符 2.读取一部分数据丢弃其他数据 3.不再返回 null指针。  有缺陷,如果输入丢失了换行,用户完全不知道发生了什么错误,还是不要看的好。(C11搞出了这两个东西?)scanf 你可理解为抓取一个个字符,put get对象是字符串。

    16.对于字符串函数

      1 char * strcpy(char * restrict s1 , const char * restrict s2);//将指针指向s2处的字符串 copy到s1指向的位置
      2 char * strncpy(char * restrict s1 , const char * restrict s2,size_t n);//将指针指向s2处的字符串 copy到s1指
      3 //向的位置 strncpy  多了一个 n 指的是有n个字符要拷贝,因为内存溢出的问题
      4 char * strcat(char * restrict s1,const char * restrict s2);//字符串拼接 将s2拼接到s1,去掉空字符,返回s1地址
      5 char * strncat(char * restrict s1,const char * restrict s2,size_t n);//字符串拼接 将s2拼接到s1,去掉空字符,返回s1地址,n个字符
      6 int strcmp(const char * s1,const char * s2);//如果s1机器排序在s2后面,返回正数,如果s1排序在s2之前,返回负数,相等返回0
      7 //机器排序?两个字符串首字符 a-z A-Z就是ascii 中实际位置的前后
      8 int strncmp(const char * s1,const char * s2,size_t n);//如果s1机器排序在s2后面,返回正数,如果s1排序在s2之前,返回负数,
      9 //相等返回0 比较n个字符后 停止 或者遇到空字符
     10 char * strchr(const char * s ,int c);//返回首次出现 c字符的指针 未找到返回null
     11 char * strpbrk(const char *s1 ,const char * s2);//如果s1包含s2任意字符,返回s1首地址,否则 null
     12 char *strrchr(const char *s,int c);//c字符最后一次出现的位置,如果没有null
     13 char  *strstr(const char * s1,const char * s2);//s1 中s2出现的首位置,如果没有返回null
     14 size_t strlen(const char *s);//不包括空字符的字符数
     15 

    17.关于几个字符串处理为整数的函数  早期为 atoi 可以有效识别数字 比如“43asd”也能识别为43,atof转换为double ,atol转换为long。但是这种转换是有缺陷的,对没有数字字符串的将返回0,不够安全。

    另外提供了新的智能函数,strtol 把字符串转换为long型,strtoul转换为 unsigned long,同样的还有strtod double.例子:long strtol(const * restrict nptr,char ** restrict endptr,int base);

    很明显 前两个确定要转换字符串的区间,后面是什么进制。

  • 相关阅读:
    Proj FuzzViz Paper Reading: Towards a JSONbased Algorithm Animation Language
    Proj FuzzViz Paper Reading: Visualization of ObjectOriented Variability Implementations as Cities
    Proj FuzzViz Paper Reading: Trace Visualization within the Software City Metaphor: A Controlled Experiment on Program Comprehension
    Proj FuzzViz Paper Reading: Understanding HighLevel Behavior with LightTraces Visualization Metaphor
    Proj FuzzViz Paper Reading: An ArchitectureTracking Approach to Evaluate a Modular and Extensible Flight Software for CubeSat Nanosatellites
    Proj FuzzViz Paper Reading: CodeCity: OnScreen or in Virtual Reality?
    ES选举机制
    ES 多重字段
    ES配置文件说明(一)
    ES段和提交点
  • 原文地址:https://www.cnblogs.com/polar-lights/p/8443386.html
Copyright © 2020-2023  润新知