C语言学习笔记二(字符串)

1、C对字符串的存储实例:定义一个256个字符的字符串,并将字母表中的大写字母存储在前26位

charstring[256];

inti;

for(i=0;i字符串的长度

法1:

charstring[256];

inti;

gets(string);

for(i=0;string[i]!=NULL;i++)

putchar(string[i]);

printf("该字符串的长度为:%d",i);

法2:大多数C编译器提供了strlen函数,它返回串的字符数目。

charstring[]="something......"

strlen(string);

为了更好地理解strlen函数如何工作,可以考虑如下方法,该方法计算字符串的长度但是不返回NULL字符。

size_tstrlen(constcharstring)

{

inti=0;

while(string[i])

i++;

returni;

}

3、将一个字符串复制到另一个字符串中

#include

char*strcpy(char*destination,constchar*source);

为了理解strcpy函数是如何工作的,可以思考如下的方法:

char*strcpy(char*destination,constchar*source)

{

while(*destination++=*source++)

;

return(destination-1)

}

4、将一个字符串追加到另一个字符串上

#include

char*strcat(char*target,constchar*source)

为了更好地理解strcat函数,思考如下的方法:

char*strcat(char*target,constchar*source)

{

char*original=target;

while(*target)

target++;//findtheendofthestring

while(*target++=*source++)

;

return(original);

}

5、给字符串追加N个字符

#include

char*strncat(char*destination,constchar*source,intn)

为了更好地理解strncat函数,思考如下方法:

char*strncat(char*destination,constchar*source,intn)

{

char*original=destination;

inti=0;

while(*destination)

destination++;//findtheendofthestringwhile((i++n)*destination=NULL;return(original);}6、判断两个字符串是否相同

intstreql(char*string1,char*string2)

{

while((*string1==*string2)&&(*string1))

{

string1++;

string2++;

}

return((*string1==NULL)&&(string2==NULL));

}

7、比较字符串时忽略大小写

#include

intstrieql(char*string1,char*string2)

{

while((toupper(*string1)==toupper(*string2))&&*string1)

{

string1++;

string2++;

}

return((*string1==NULL)&&(*string2==NULL));

}

8、将字符串转化为大写或者小写

#include

int*strlwr(char*string)

{

char*original=string;

while(*string)

{

*string=tolower(*string);

string++;

}

return(original);

}

9、获取字符串中第一次出现的某个字符

char*strchr(constchar*string,charletter)

{

while((*string!=letter)&&(*string))

string++;

return(string);

}

10、返回索引到串的首次出现

intstr_index(constchar*string,charletter)

{

char*original=string;

while((*string!=letter)&&(*string))

string++;

return(string-original);

}

11、将字符串的字母反转

char*strrev(constchar*string)

{

chartemp;

char*original=string;

char*forward=string;

while(*string)

string++;

while(forward字符串

intstrcmp(constchar*string1,constchar*string2)

{

while((*string1==*string2)&&(*string1))

{

string1++;

string2++;

}

if((*string1==*string2)&&(!*string1))

return0;//Samestrings

elseif((*string1)&&(!*string2))

return(-1);//Samebutstring1islonger

elseif((!*string1)&&(*string2))

return(1);//Samebutstring2islonger

else

return((*string1>*string2)?-1:1);//Different

}

13、比较两个字符串的前N个字符串

intstrncmp(constchar*string1,constchar*string2,size_tn)

{

while((*string1==*string2)&&(*string1)&&i*string2)?-1:1);//Different

}

14、将字符串转化为数字函数用途atof将字符串转换为浮点数值atoi将字符串转换为整型数值atol将字符串转换为长整数数值strtod将字符串转换为双精度型数值strtol将字符串转换为长整型数值15、复制字符串的内容

调用strdup函数时,函数使用malloc分配内存,然后哦将字符串单元拷贝至内存单元。但程序不再使用字符串拷贝。

#include

#include

char*strdup(constchar*string)

{

char*ptr;

if(ptr=malloc(strlen(string)+1))

strcpy(ptr,string);

returnptr;

}

16、从给定字符序列中查找字符的首次出现

在字符串string1中,函数将返回第一个不包含在string2中的字符的偏移量。

size_tstrspn(constchar*string1,constchar*string2)

{

inti,j;

for(i=0;*string1;string1++,i++)

{

for(j=0;string2[j];j++)

{

if(*string1==string2[j])

break;

if(string2[j]==NULL)

break;

}

}

returni;

}

17、在字符串中查找子字符串

char*strstr(constchar*string1,constchar*string2)

{

inti,j,k;

for(i=0;string1[i];i++)

for(j=i,k=0;string1[j]==string2[k];j++,k++)

if(!string2[k+1])

return(string1+i);

returnNULL;

}

18、计算子字符串出现的次数

charstrstr_cnt(constchar*string,constchar*substring)

{

inti,j,k,count=0;

for(i=0;string[i];i++)

for(j=i,k=0;string[j]==substring[k];j++,k++)

if(!substring[k+1])

count++;

returncount;

}

19、从字符串中删除子字符串

char*strstr_rem(char*string,char*substring)

{

inti,j,k,loc=-1;

for(i=0;string[i]&&(loc==-1);i++)

for(j=i,k=0;string[j]==substring[k];j++,k++)

if(!substring[k+1])

loc=i;

if(loc!=-1)

{

for(k=0;substring[k];k++)

;

for(j=loc,i=loc+k;string[i];j++,i++)string[j]=string[i];string[i]=NULL;}return(string);}20、用另一个子字符串代替子字符串

#include

char*strstr_rep(char*Source,char*Old,char*New)

{

char*original=Source;

chartemp[256];

intold_length=strlen(Old);

inti,j,k,location=-1;

for(i=0;Source[i];i++)

for(j=i,k=0;Source[j]==Old[k];j++,k++)

location++;

if(location!=-1)

{

for(j=0;j字符串是大写还是小写

if(islower(character))

if(isupper(character))

#defineislower(c)(((c)>'a')&&((c)'A')&&((c)

int_toupper(intcharacter);

inttoupper(intcharacter);

23、将字符转换成小写形式

#include

int_tolower(intcharacter);

inttolower(intcharacter);

24、初始化字符串

chartitle[]="something......."

charstr[64]="string..."

相关推荐