C/C++的常用库及库函数学习了解

C/C++的常用库及库函数学习了解


     在这主要介绍的是C/C++下一些基本库的了解学习及库下一些基本函数的解释和Demo展示。


首先来看几个问题:


1. #include <>#include“”的区别:

     <>:引用的是编辑器的类库路径里面的头文件

     “”:引用的是个人程序目录下的相对路径中的头文件


2.CC++对头文件的引用有什么区别:

     C#include<stdio.h>

     C++: #include <iostream>


C

     #include<stdio.h>:定义基本输入/输出函数

     #include<string.h>:定义字符串处理函数

     #include<float.h>:定义浮点数处理函数

     #include<stdlib.h>:定义杂项函数及内存分配处理函数

     #include<math.h>:定义基本数学处理函数

     #include<ctype.h>:定义对字符的处理函数

C++

#include<iostream>:数据流输入输出

#include<cstdio>:输入输出函数

     #include <cstring>:字符串处理

     #include <cfloat>:浮点数处理

     #include<cstdlib>:杂项函数及内存分配函数

     #include <cmath>:数学函数

     #include <cctype>:字符处理


stdio.h


文件访问:

·fopen打开文件

·fclose 关闭文件

其中需要注意的有:

1/如果文件成功打开的话,fb!=null,如果文件成功关闭的话,返回的int型数i==0

2/fopen的第一个参数是需要打开的文件名,第二个参数是以什么方式打开,含有方式有:

━━━━━━━━━━━━━━━━━━━━━━━━━━━━

字符                  含义

────────────────────────────

"r"           打开文字文件只读

"w"         创建文字文件只写

"a"          增补,如果文件不存在则创建一个

"r+"        打开一个文字文件读/

"w+"      创建一个文字文件读/

"a+"       打开或创建一个文件增补

"b"         二进制文件(可以和上面每一项合用)

"t"          文这文件(默认项)


Demo :

#iclude<stdio.h>
int main(){
    FILE *fp;                /*定义一个文件指针*/
    int i;
    fp=fopen("test.txt", "rb");  /*打开当前目录名为CLIB的文件只读*/
    if(fp==NULL)             /*判断文件是否打开成功*/
    puts("File open error");/*提示打开不成功*/
    i=fclose(fp);            /*关闭打开的文件*/
    if(i==0)                 /*判断文件是否关闭成功*/
    printf("Close OK");         /*提示关闭成功*/
    else
puts("File close error");/*提示关闭不成功*/
return 0;
 }

·fprintf():文件的顺序写函数,返回数是实际写入文件中的字节数,错误时返回负数

·fputs():文件的顺序写函数,函数返回0时表明将string指针所指的字符串写入文件中的操作成功,返回非0, 表明写操作失败。

·fputc():文件的顺序写函数,返回一个向文件所写字符的值,此时写操作成功, 否则返回EOF(其值为-1,stdio.h中定义)表示写操作错误。


Demo :

<span style="color:#000000;">#include<stdio.h>
int main(){
    char *s="That's good news";  /*定义字符串指针并初始化*/
    int i=250;                    /*定义整型变量并初始化*/
    FILE *fp;                     /*定义文件指针*/
    fp=fopne("test.dat", "w");    /*建立一个文字文件只写*/
    fputs("Your score of TOEFLis", fp);/*向所建文件写入一串字符*/
    fputc(':', fp);               /*向所建文件写冒号:*/
    fprintf(fp, "%d/n", i);       /*向所建文件写一整型数*/
    fprintf(fp, "%s", s);         /*向所建文件写一字符串*/
    fclose(fp);                   /*关闭文件*/
return 0;
}</span>


·fscanf():顺序读操作函数,返回值为EOF(-1),表明读错误,否则读数据成功。

·fgets():顺序读操作函数,从文件中读取至多n-1个字符(n用来指定字符数),并把它们放入string指向的字符串中,在读入之后自动向字符串未尾加一个空字符,读成功返回string指针,失败返回一个空指针。

·fgetc():顺序读操作函数,返回文件当前位置的一个字符, 读错误时返回EOF

Demo

<span style="font-size:18px;">#include<stdio.h>
int main(){
    char *s, m[20];
    int i;
    FILE  *fp;
    fp=fopen("test.dat", "r");    /*打开文字文件只读*/
    fgets(s, 24, fp);             /*从文件中读取23个字符*/
    printf("%s", s);              /*输出所读的字符串*/
    fscanf(fp, "%d", &i);         /*读取整型数*/
    printf("%d", i);              /*输出所读整型数*/
    putchar(fgetc(fp));           /*读取一个字符同时输出*/
    fgets(m, 17, fp);             /*读取16个字符*/
    puts(m);                      /*输出所读字符串*/
    fclose(fp);                   /*关闭文件*/
    getch();                      /*等待任一键*/
return 0;
}</span>

·printf():格式化输出函数

输出格式总结:

1)类型
类型字符用以表示输出数据的类型,其格式符和意义如下表所示:

格式字符

意义

d

以十进制形式输出带符号整数(正数不输出符号)

o

以八进制形式输出无符号整数(不输出前缀0)

x,X

以十六进制形式输出无符号整数(不输出前缀Ox)

u

以十进制形式输出无符号整数

f

以小数形式输出单、双精度实数

e,E

以指数形式输出单、双精度实数

g,G

%f%e中较短的输出宽度输出单、双精度实数

c

输出单个字符

s

输出字符串

 

2)标志
标志字符为-+#和空格四种,其意义下表所示:

标志

意义

-

结果左对齐,右边填空格

+

输出符号(正号或负号)

空格

输出值为正时冠以空格,为负时冠以负号

#

csdu类无影响;
o类,在输出时加前缀o
x类,在输出时加前缀0x
egf类当结果有小数时才给出小数点。


Demo

<span style="font-size:18px;">#include<stdio.h>
#include<string.h>
int main()
{
    int i = 6;
    float j = 2.0;
    char k[20] = "Hello the world";
    printf("From 百度百科");
    printf("i=%d;j=%f", i, j);
    printf("k=%c", k);
    return 0;
}</span>


·sprintf()将格式化的数据写入到某个字符串


Demo

<span style="font-size:18px;">#include<stdio.h>
int main()
{
    int s;
    sprintf(s, "%d", 123); //将"123"赋值给s
    return 0;
}</span>



·strlen():统计字符串str中字符的个数(不包括终止符’\0’

Demo

#include
#include
int main(){
    char *str="how are you!";
    int aa;
    aa = strlen(str);
    printf("the lence is:%d\n",aa); //结果是12
return 0;
}


·strcpy():拷贝函数,拷贝一个字符串到另外一个

Demo

#include <stdio.h>
#include <string.h>
int main(){
 char string[10];
 char *str1 = "abcdefghi";
 strcpy(string, str1);  //将str1的值赋给string
  
  printf("%s\n", string);
return 0;
}

·strcat():字符串拼接函数,(取消掉str1后面的’\0’实现拼接)

Demo

#include <string.h>
#include <stdio.h>
int main(){
    char destination[25];
    char *Sa = "This", *Sb = "is", *Sc = "a words";
    strcpy(destination, Sa);
    strcat(destination, Sb);
    strcat(destination, Sc);
    printf("%s\n", destination); //destination的内容便是This is a worlds
return 0;
}

·strchr() :在一段字符串中查找给定字符的第一个匹配之处,其返回的值需要查找的字符在字符串的位置( %d 类型)

·strcmp():字符串比较,intstrcmp(char *str1, char *str2);返回值是str1Asic值减去str2Asic值,如果是字符串,则是所有字符的Asic总和相减;两串相等,返回0

如果忽略大小写:strncmpi();stricmp();strcmpi();

Demo

#include <string.h>
#include <stdio.h>
int main(){
    char *buf1 = "aaa", *buf2 = "bbb", *buf3 = "ccc";
    int ptr;
    ptr = strcmp(buf2, buf1);
    if (ptr > 0)
    printf("buffer 2 is greater than buffer 1\n");
    else
  printf("buffer 2 is less than buffer 1\n");
    ptr = strcmp(buf2, buf3);
    if (ptr > 0)
    printf("buffer 2 is greater than buffer 3\n");  
    else
    printf("buffer 2 is less than buffer 3\n");
return 0;
}

·strrev():实现串倒转

·strupr():大小写转换之小写转大写

注:实际实现过程中发现string.h未对strupr()定义

Demo:

#include <string.h>
#include <stdio.h>
int main()
{
  char *string="abcdefghijklmnopqrstuvwxyz";
  char *ptr;
  ptr=strupr(string);
  printf("%s",ptr);
  return 0;
}


·strlwr():大小写转换之大写转小写

注:实际实现过程中发现string.h未对strlwr()定义

Demo:


#include <string.h>
#include <stdio.h>
int main()
{
  char str[]="HOW TO SAY?";
  printf("%s",strlwr(str));
  return 0;
}

·memcpy():字符串拷贝

注:与strcpy()的区别在于,strcpy提供了字符串的复制。即strcpy只用于字符串复制,并且它不仅复制字符串内容之外,还会复制字符串的结束符。memcpy提供了一般内存的复制。即memcpy对于需要复制的内容没有限制,因此用途更广。

strcpymemcpy主要有以下3方面的区别。
1
、复制的内容不同。strcpy只能复制字符串,而memcpy可以复制任意内容,例如字符数组、整型、结构体、类等。
2
、复制的方法不同。strcpy不需要指定长度,它遇到被复制字符的串结束符"\0"才结束,所以容易溢出。memcpy则是根据其第3个参数决定复制的长度。
3
、用途不同。通常在复制字符串时用strcpy,而需要复制其他类型数据时则一般用memcpy

Demo:

#include <string.h>
#include <stdio.h>
int main()
{
  char srcm[]="******************************";
  char destm[]="abcdefghijlkmnopqrstuvwxyz0123456709";
  char *ptrm = new char[strlen(srcm)+1];
  memcpy(ptrm,srcm,(strlen(srcm)+1));
  if (ptrm)
    printf("destination after memcpy:%s\n",ptrm);
  else
    printf("memcpy failed");
    delete []ptrm;
return 0;
}

·memset():函数原型:  void *memset(void *s, int c, size_t n); 将字符串中的前n个字节内容设置为c

Demo

#include <string.h>
#include <stdio.h>
int main()
{
  char buffers[]="Hello world";
  printf("Buffer before memset:%s\n",buffers);
  memset(buffers,'*',4);
  printf("Buffer after memset:%s\n",buffers);//结果输出:****o world
return 0;
}

·memmove():字符串拷贝。

原型:void*memmove( void* dest, const void* src, size_t count );

src中的count中字符串覆盖dest中。

stdlib.h


·malloc():分配指定字节数的内存,并返回该内存的指针。·calloc():在内存的动态存储区中分配指定长度的连续空间,函数返回一个指向分配起始地址的指针;如果分配不成功,返回NULL·rand():生成0~RAND_MAX之间的一个随机数,其中RAND_MAXstdlib.h中定义的一个整数,它与系统有关。注:srandrand()配合使用产生伪随机数序列。rand函数在产生随机数前,需要系统提供的生成伪随机数序列的种子,rand根据这个种子的值产生一系列随机数。如果系统提供的种子没有变化,每次调用rand函数生成的伪随机数序列都是一样的。

·srand()srand函数是随机数发生器的初始化函数。

注:如果不配合此函数使用每次重新执行函数的时候生成的随机数不变。
·free():释放内存空间函数。

free(void*ptr);释放ptr所指向的一块内存空间,ptr是一个任意类型的指针变量,它指向被释放区域的首地址。被释放区应是由malloccalloc函数所分配的区域。

·abort():异常终止一个进程,无返回值。


  • 5
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值