- 46.94 KB
- 2022-08-23 发布
- 1、本文档由用户上传,淘文库整理发布,可阅读全部内容。
- 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,请立即联系网站客服。
- 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细阅读内容确认后进行付费下载。
- 网站客服QQ:403074932
C语言学习常用函数1.strstr()和 strrchr()if(strstr(buff,"IONBETA")!=NULL)判断包含文件:string.h函数名:strstr函数原型:externchar*strstr(constchar*str1,constchar*str2);语法:*strstr(str1,str2)str1:被查找目标 stringexpressiontosearch.str2:要查找对象 Thestringexpressiontofind.返回值:若str2是str1的子串,则先确定str2在str1的第一次出现的位置,并返回此位置到str1末尾的所有字符;如果str2不是str1的子串,则返回NULL。(注:若想返回str2在str1第一次出现的位置,不是这个函数)。例子:charstr[]="1234xyz";char*str1=strstr(str,"34");cout<#includeintmain(void){ charstring[20]; char*ptr,c='r'; strcpy(string,"Therearetworings"); ptr=strrchr(string,c); if(ptr) printf("Thecharacter%cisatposition:%s\n",c,ptr); else printf("Thecharacterwasnotfound\n"); return0;}strrchr返回的指针应当指向"rings"里的'r',而不是“There”或"are"里的'r'。运行结果是:Thecharacterrisatposition:rings2.strcmp(),strncmp(),strncpy(),strcpy()原型:externintstrcmp(constchar*s1,constchar*s2);\n所在头文件:string.h功能:比较字符串s1和s2。一般形式:strcmp(字符串1,字符串2)说明:当s1s2时,返回正数即:两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止。如:"A"<"B""a">"A""computer">"compare"特别注意:strcmp(constchar*s1,constchar*s2)这里面只能比较字符串,不能比较数字等其他形式的参数。用法:intstrncmp(char*str1,char*str2,intmaxlen);说明:此函数功能即比较字符串str1和str2的前maxlen个字符。1.如果前maxlen字节完全相等,返回值就=0;2.在前maxlen字节比较过程中,如果出现str1[n]与str2[n]不等,则返回(str1[n]-str2[n])。3.springf(),printf(),fprintf()函数功能:把格式化的数据写入某个字符串函数原型:intsprintf(char*buffer,constchar*format[,argument]…);返回值:字符串长度(strlen)例子:char*who="I";char*whom="CSDN";sprintf(s,"%slove%s.",who,whom);//产生:"IloveCSDN."这字符串写到s中sprintf(s,"%10.3f",3.1415626);//产生:"3.142注意:在将各种类型的数据构造成字符串时,sprintf的强大功能很少会让你失望。由于sprintf跟printf在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,后者则直接在命令行上输出。这也导致sprintf比printf有用得多。4.substr()函数功能:substr是C++语言函数,主要功能是复制子字符串,要求从指定位置开始,并具有指定的长度。定义:substr(size_type_off=0,size_type_count=npos)参数:_off所需子字符串的起始位置,字符串中第一个字符索引为0,默认为0.count复制字符数目.返回值为:子字符串.备注:若没有制定字符串的长度或者字符串长度超出范围,则返回一个空字符串.例子:stringstr,ss;str=”helloworld”;ss=substr(3,4);\nreturn(ss);输出结果为:low.5.getline(),fgets(str,buff,fp),get()函数功能:getline()函数会生成一个包含一串从输入流读入的字符的字符串,直到以下情况发生会导致生成的此字符串结束。1)到文件结束,2)遇到函数的定界符,3)输入达到最大限度.(用于读取一行字符直到换行符,包括换行符.)getline(char*buffer,streamsizenum,delim)参数含义:该函数读取字符到buffer中,buffer通常表示一个字符数组,streamsizenum表示一次读入对少个字符 ,num-1个字符已经读入, 当碰到一个换行标志, 碰到一个EOF, 或者任意地读入,直到读到字符delim。delim字符不会被放入buffer中。delim字符可以自已设定,默认为回车符'/n' .C++中getline(stream&in,string&s)函数功能:从输入文件中读一行到字符串s中!函数原型:char*fgets(char*buf,intbufsize,FILE*stream);结合strncpy(str,buff+i,n)表示从buff+i位置开始复制n个字符到str中(str的内存必须足够大)while(fgets(buff,MAXRNXLEN,fp))判断是否读到文件末尾功能:从文件流中读取一行,送到缓冲区.注意:1.当遇到换行符或者缓冲区已满时,fgets就会停止,返回读到的数据,fgets不能用来读取二进制文件.2.每次调用时,fgets函数都会把缓冲区最后一个字符设置为NULL,也就是最后一个字符不能用来存放所需的数据,所以一般情况下最多能存放bufsize-1个字符。6.atoi(),atol(),atof(),strtod,strtol,strtoul.函数原型:intatoi(constchar*nptr);函数功能:把字符串转换成整形数,ASCIItointeger 的缩写.函数说明:参数nptr字符串,如果第一个非空格字符存在,是数字或者正负号则开始做类型转换,之后检测到非数字(包括结束符\0)字符时停止转换,返回整型数。否则,返回零,头文件:#include#include#includeintmain(void){floatn;charconst*str="12345.67";n=atoi(str);printf("string=%sinteger=%f\n",str,n);\nreturn0;}执行结果:string=12345.67integer=12345.0000007.c_str()函数功能:将string对象,转化为char*对象.为了与c语言兼容,在c语言中没有string类型,故必须通过string类对象的成员函数c_str()把string对象转换成c中的字符串样式。c_str函数的返回值是constchar*的,不能直接赋值给char*例子:#include#includeusingnamespacestd;intmain(){stringadd_to="hello!";conststringadd_on="baby";constchar*cfirst=add_to.c_str();constchar*csecond=add_on.c_str();char*copy=newchar[strlen(cfirst)+strlen(csecond)+1];strcpy(copy,cfirst);strcat(copy,csecond);add_to=copy;cout<<"copy:"<