c语言函数库
第四章(字符串函数)
1.atof:字符串转浮点型函数
函数原型:float atof(const char *str);
头文件:#include<stdlib.h>
是否是标准函数:是
函数功能:将字符串转换成浮点值,也就是将字符串str转换成浮点值然后获取转换后的结果。
返回值:返回转换后的浮点值
例程如下: 应用atol将字符串转换成浮点值。
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
  char *str="12345.67";
  float result;
  result=atof(str);
  printf("string=%s\nfloat =%f\n",str,result);
  getch();
  return 0;
}
例程说明:
1)首先,程序声明了一个字符串作为待转换的字符串,声明的浮点型变量result用于获取转换结果。
2)程序通过调用atol将字符串转换为相应的浮点型变量,获取转换结果,转换规则与strtoX函数相同。
3)最后将转换结果打印出来。
本例程的运行结果是:
string =12345.67
float=12345.669922
注意:本例程中,转换成浮点数的结果有些奇怪,它并不等于我们字符串中变量的值,而是存在一定的误差,虽然误差很小,但是可以看出误差是从原字符串中的最后一位开始的,这是由于在转换过程中函数内部在实现时采用的转换方式造成的,如果想避免这种误差,可以使用strtoX系列函数。
2.atoi:字符串转整型函数
函数原型:int atoi(const char *str);
头文件:#include<stdlib.h>
是否是标准函数:是
函数功能:将字符串转换成整数值,也就是将字符串str转换成整型值然后获取转换后的结果。
返回值:返回转换后的整型值
例程如下: 应用atoi将字符串转换成整型值。
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
  char *str="12345.67";
  int result;
  result=atoi(str);
  printf("string=%s\ninteger=%d\n",str,result);
  getch();
  return 0;
}
例程说明:
1)首先,程序声明了一个字符串作为待转换的字符串,声明的整型变量result用于获取转换结果。
2)程序通过调用atoi将字符串转换为相应的整型变量,获取转换结果,转换规则与strtoX函数相同。
3)最后将转换结果打印出来。
本例程的运行结果是:
string =12345.67
integer=12345
3.atol:字符串转长整型函数
函数原型:long atol(const char *str);
头文件:#include<stdlib.h>
是否是标准函数:是
函数功能:将字符串转换成长整数值,也就是将字符串str转换成长整型值然后获取转换后的
结果。
返回值:返回转换后的长整型值
例程如下: 应用atol将字符串转换成长整型值。
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
  char *str="12345.67";
  long result;
  result=atol(str);
  printf("string=%s\nlong =%ld\n",str,result);
  getch();
  return 0;
}
例程说明:
1)首先,程序声明了一个字符串作为待转换的字符串,声明的长整型变量result用于获取转换结果。
2)程序通过调用atol将字符串转换为相应的长整型变量,获取转换结果,转换规则与strtoX函数相同。
3)最后将转换结果打印出来。
本例程的运行结果是:
string =12345.67
long=12345
函数原型:void *memchr(void *s, char ch, unsigned n)
头文件:#include<string.h>
是否是标准函数:是
函数功能:在数组的前n个字节中搜索字符 ch
返回值:返回一个指针,它指向chs 中第一次出现的位置。如果在s的前n个字符中不到匹配,返回NULL
例程12.31应用函数memchr搜索一个字符串的子串。
#include <string.h>
#include <stdio.h>
int main(void)
{
  char *str="I love China\n";
  char *p;
  p=memchr(str,'C',strlen(str));
  if(p)
        printf("%s",p);
  else
        printf("The character was not found\n") ;
}
例程说明:
1)首先初始化字符串“I love China\n”,将首地址赋值给str
2)在字符串str中查字符’C’出现的位置,并返回以第一个字符’C’开头的字符子串的指针。
3)如果返回值不为NULL,打印该子串。
本例程的运行结果为:
China
函数原型:void *memcmp(char *s1, char *s2, unsigned n)
头文件:#include<string.h>
是否是标准函数:是
函数功能:比较s1所指向的字符串与s2所指向的字符串的前n个字符。
返回值:根据s1所指向的对象的大于、等于、小于s2所指向的对象,函数memcmp分别返回大于、等于、小于0的值。
例程如下:比较两个字符串。
#include <stdio.h>
#include <string.h>
int main(void)
{
    char *str1="ABCDEF";
    char *str2="ABCDEf";
    int s1,s2;
    s1=memcmp(str1,str2,6);
    s2=memcmp(str1,str2,5);
    printf("The comparison of 6 character\n");
    if(s1>0)printf("%s>%s\n",str1,str2);
    else
        if(s1<0)printf("%s<%s\n",str1,str2);
    else
        printf("%s=%s\n",str1,str2);
    printf("The comparison of 5 character\n");
    if(s2>0)printf("%s>%s\n",str1,str2);
    else
        if(s2<0)printf("%s<%s\n",str1,str2);
    else
        printf("%s=%s\n",str1,str2);
}
例程说明:
1)首先初始化两个字符串“ABCDEF”和“ABCDEf”。
2)然后应用函数memcmp将这两个字符串按照不同的字符个数进行比较,将返回的比较结果复制给变量s1s2
3)显示比较结果。
本例程的运行结果为:
The comparison of 6 character
ABCDEF<ABCDEf
The comparison of 5 character
ABCDEF=ABCDEf
注意:
由于字符串比较的方法是从左至右按照字符的ASCII码进行比较的,因此在比较6个字符时,字符串“ABCDEF<ABCDEf”(fASCII值大于FASCII值);而只比较5个字符时,字符串“ABCDEF=ABCDEffloat()函数”。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。