linux下面文件字符操作总结函数集锦

来源:互联网 发布:八爪鱼数据采集器官网 编辑:程序博客网 时间:2024/06/05 07:49

1:gets函数得到一个字符流保存在数组str中,char *gets(char *str);同时把读入的换行符替换成了'\0'

  遇到文件的结束或错误就返回NULL

2:getc和fgetc的区别是,功能完全相同,只是getc是宏定义函数,不是实则的函数 int getc (FILE *fp)       int fgetc (FILE *fp)

  同理,fputc和putc的区别是同样的,int putc (int ch,FILE *fp)  int fputc (int ch,FILE *fp)

3: 在window编程中,fread或者是fwrite对二进制文件操作 ,所以在windows中写入文件后可能打开的文件看是“乱码”,最好用fprintf和fscanf

4:putchar实则是putc函数的升级,即int putc(int ch,stdout),其实getchar类似,是int getc(int ch,stdin)

5:ungetc是把字符写回流中,int ungetc (int ch ,FILE *fp)

6:字符处理所涉及到的头文件是ctype.h

 void ltrim(char str[])    //去除字符串最前面的空格
   void rtrim(char str[])    //去除字符串最后的空格
   void trim(char str[])     //去除字符串前后的空格
   void delchar(char str[],char ch) //删除字符串中的指定字符

   int strcasecmp (const char *s1, const char *s2);// 用来比较参数s1和s2字符串,比较时会自动忽略大小写的差异

 int stricmp(char *str1, char *str2);//以大小写不敏感方式比较两个串,忽略大小写

 int strcmp(char*str1,char*str2);不忽略大小写

 int strncmpi(char *str1, char *str2, unsigned maxlen);比较字符串str1和str2的前maxlen个字符

 int memcmp(void*buf1,void *buf2,unsigned int count)//比较内存区域buf1和buf2的前count个字节。Void*是指任何类型的指针。

 int memicmp(void*buf1,void *buf2,unsigned int count)//比较内存区域buf1和buf2的前count个字节,但不区分大小写。

 char* strstr(char*src,char*find)//从字符串src中寻找find第一次出现的位置(不比较结束符NULL)返回指向第一次出现find位置的指针,如果没有找到则返回NULL

    char *strtok(char*src, char*delim);//分解字符串诶一组标记串,src为要分解的字符串,delim为分隔符字符串。 首次调用时,src必须指向要分解的字符串,随后调用要把s设成NULL;strtok中src中查找包含在delim中的字符,并用NULL(’\0’)来替换直到找遍整个字符串。从s开头开始的一个个被分割的串。当没有被分割的串时则返回NULL。所有delim中包含的字符都会被滤掉,并将被滤掉的地方设为一处分割的节点。

  char*strcpy(char*dest,char*src)//把src所指由NULL结束的字符串复制到dest所指的数组中。 其中,src和dest所致内存区域不可重叠且dest必须有足够的空间来容纳src的字符串。返回指向dest的指针。

   char* strdup(char*src)//复制字符串src,返回指向被复制字符串的指针,所需空间有malloc()分配且可以有free()释放。

  void *memcpy(void *dest,void *src,unsigned int count);//src和dest 所指内存区域不能重叠;由src所致内存区域复制count个字节到dest所指内存区域中。返回指向dest的指针。

 char* strcat(char*dest,char*src)//把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0'

   char* strncat(char*dest,char*src,int n);//把src所指字符串的前n个字符添加到dest结尾处(覆盖dest结尾处的’\0’)并添加’’\0’.

   void *memchr(void*buf,char ch,usigned count)//从buf所指内存区域的前count个字节查找字符ch,当第一次遇到字符ch时停止查找。如果找到了,返回指向字符ch的指针;否则返回NULL

   char* strchr(char*src,char ch)//查找字符串s中首次出现字符ch的位置返回首次出现c的位置的指针,如果s中不存在c则返回NULL

    int strcspn(char*src,char*find)//在字符串src中搜寻find中所出现的字符返回第一个出现的字符在src中的下标值,即src中出现而不在find中出现的字串的长度。

    char*strpbrk(char*s1,char*s2)//在字符串S1中寻找字符串S2中任何一个字符相匹配的第一个字符的位置,空字符不包括在内。返回指向S1中第一个相匹配的字符的指针,如果没有匹配字符则返回空指针。

    char*strupr(char*src)//将字符串src转换成大写形式,只转换src中出现的小写字母,不改变其他字符,返回指向src的指针

    char*strlwr(char*src)//将字符串src转换成小写形式,只转换src中出现的大写字母,不改变其他字符,返回指向src的指针。

   char*strrev(char*src)//把字符串src的所有字符的顺序颠倒过来(不包括NULL),返回指向颠倒顺序后的字符串指针

7:判断字符

   int isalpha(int  ch)//若ch是字母,返回非零值,否则返回零

    int isalnum (int ch)//若ch全是数字,返回值非零,否则返回零

   int isascii (int ch) 若ch是ascll码值则返回非零,相反则返回零

   int  iscntrl   (int ch) 若ch是作废字符(0x7f)或普通控制字符(0x00——0x1f),返回值非零,否则返回零

  int  isdigit    (int ch) 若ch是数字0——9的,返回值非零,。。。

  int isgraph  (int ch) 若ch是可打印字符(不含空格)(0x21——0x7E),返回值是非零,否则、、、

  int islower (int ch) 若ch是小写字母。

  int isprint(int ch) ch是可打印字符(含空格)

 int ispunct(int ch) 若ch是标点字符(0x20-0x7E)

  int isspace(int ch )若ch是空格,水平制表符,回车符,走纸换行(‘\f’),垂直制表符,换行符则换回非零值

  int isupper(int ch) ch是大写字母,如果是就返回非零,否则返回零

  int isxdigit(int ch) 若ch是十六进制数则返回非零。

  int tolower  (int ch)如ch是大写字母返回相应的小写字母

  int toupper (int ch ) 若ch是小写字母则返回相应的大写字母

8:strlen这个函数可以获得指定字符串的长度,这个长度不包括字符串结尾的‘\0’,字符,因此在用指针或者是数组来存储这个字符串的时候,申请的内存空间长度应该是该函数返回长度的值加1,这洋不会导致内存溢出,同时需要注意传入的参数必须是一个字符串而不是一个字符数组,也就是说str必须以‘\0’结尾,否则会造成不可预知的错误

 

9:char *strchr(const char *s,intc); 函数strchr函数可以指定一个字符,然后在指定字符串中定位这个字符第一次出现的位置,并把它返回给系统

   char *strrchr(const char *s,intc);而strchr函数扫描字符c在字符串最后一次出现的位置,并把该值返回给系统

10:void *memset(void *s,int c,size_t n)memset函数把s所指向的内存缓冲区的前n个字符全部设置成字符c,并返回指向该内存区域的指针

11:void *memmove(void *dest,const void *src,size_t count);memmove函数的功能是由src所指向内存区域复制count个字节到dest所知内存区域src和dest所指内存区域可以重叠,但复制src内容会被更改,函数返回指向dest的指针

12:数学类函数<math.h>

     double acos(double x)用来计算参数x的反余弦值

     double asin(double x)用来计算参数x的反正弦值

      div_t div(long numerator ,long denmoinator)用来做除法

      double atan(double x)用来计算参数x的反正切值

     double atan2(double x,doubley)用来计算x/y的反正切值

     double cos(double x)用来计算x的余弦值

    double sin (double x)用来计算x的正弦值

    double tan(double x)用来计算正切值

    double exp(double x)用来计算以e为底的x次方值,即ex的值。然后返回其结果

    double  frexp(double x,int *exp) 用来将参数x的浮点型数切割成底数和指数,底数部分直接返回,指数部分则借用参数exp指针返回,将返回值乘以2的exp次方即所得的x的值

    double ldexp (double,int exp)用来讲参数x乘以2的exp次方值

   double log(double x)用来计算以e为敌的x对数值

   double log10(double x)用来计算以10为底的x的对数值

    double modf(double value ,double *iptr)用来对付点数进行整数和小数部分的分离,其中整数部分存储在以ipstr的指针变量中的,该函数的返回值是计算过后的小数部分

    double pow(double x,double y)用来计算以x为敌的y次方,的值,然后将结果返回

    double sqrt(double x)用来计算将x的平方更,然后将结果返回

   double ceil(double x)用来返回不下雨参数x的最小整数值,结果以double形态返回

   int abs(int x)用来计算整数的绝对值

   int fabs(int x)用来计算浮点数的绝对值

   int   floor(double x)floor函数用来计算比x值小而且接近x值的整数值,并返回整数值

   double  fmod(double x,double y)fmod番薯用来计算浮点数x/y运算后的余数

13:数据结构算法类函数

   二元搜索函数 bsearch(),void *bsearch(const void *key,const void *base,size_t nmenb,size_t size,int(*compar));

    bsearch()利用二元搜索从以排序的数组中查找数据,参数key指向于查找的关键数据,参数base指向要被搜索的数组开头地址,参数nmemb地表数组中的袁术数量,每一元素的大小则由参数size决定,最后一项参数compar的第一个参数所指的元素数据大雨第二个参数所指的元素数据则必须回传大于0的值,两个元素相等就回传0

    lfind函数,void *lfind(const void *key,const void *base,size_t *nmemb,size_t size,int(*compar))

    里面的参数和besearch差不多

   lsearch(0函数是线性搜索数组中从头到位的每一项数据

   void qsort(const void *key,const void *base,size_t *nmemb,size_t size,int(*compar))//是一种快速排序的方法

  rand()函数,产生随机数,但是要种下随机种子才行,srand函数,void srand(unsingned int seed)例如:srand((usingned int)time(NULL))

14:文件类函数补充

   fgets()函数,char *fgets(char * s,int size,FILE *fp)//fgets函数从流stream中读入最多size-1个字符到数组s中,当遇到换行符的时候就把换行符保留在s中,读入不再进行,数组s以‘\0’结尾

     fputs()函数。int fputs(const char *s,FILE *fp)用来将参数s所指的值写入到fp所指的文件内

   rewind()函数,void rewind(FILE *fp)用来将fp所指的文件内的字符移到文件的开头

    remove()函数,int\remove (const char *pathname),用来删除参数pathname指定的文件或者是目录1,如果参数pathnam为一个文件,则调用unlink()处理,若参数pathname为一个目录。则调用rmdir()来处理,成功则返回零

   rename()函数   用来更改文件名称或者是位置,intrename (const char *oldpath, const char*newpath)

    freopen()函数,用来重新戴开一个文件,FILE *freopen(const char *path,const char *mod ,FILE *fp)

   fflush()函数,同步缓冲区,int fflush(FILE *FP)用来刷新所有的输出流,程序正常借宿或者缓冲区满时,缓冲区自动清仓,将写入缓冲区但是还没有来得及写入文件的全部数据写入到文件中

  fgetpos()函数,获取文件位置int fgetpos(FILE *fp,fpos_t   *positon),成功就返回零,不成功就返回非零

   fsetpos()函数,设置文件位置,int fsetpos(FILE *FP,const fpos_s position)

  mktemp()函数,创建临时文件,int mktemp(char *tenlate)

  tmpfile()函数,临时文件,FILE *tmpfile(void)

  tmpnam()函数,得到临时文件名,char *tmpnam(char s【L-mpnam】)

原创粉丝点击