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

来源:互联网 发布:品茗网络计划软件 编辑:程序博客网 时间:2024/05/17 03:12

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");         /*提示关闭成功*/    elseputs("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#includeint main(){    char *str="how are you!";    int aa;    aa = strlen(str);    printf("the lence is:%d\n",aa); //结果是12return 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 worldsreturn 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 worldreturn 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():异常终止一个进程,无返回值。


1 0
原创粉丝点击