C语言 字符串
【C语言】删除字符串中所有空格(Demo)
#include
#include
void remove_space(char* str);
#define N 20
int main(void)
{
char str[N];
fgets(str, sizeof(str), stdin);
remove_space(str);
fputs(str, stdout);
system("pause");
return 0;
}
void remove_space(char *str)
{
int i, j;
for (i = 0, j = 0; str[j] && str[j]!='\n'; j++) //j为活动下标,i始终在离j最近的左侧且str[i]不为空格
{
if (str[j] != ' ')
str[i++] = str[j]; //等价于str[i] = str[j]; i++;
}
str[i] = 0; //最后i值为除开空格后字符串的长度
}
C语言——比较两个字符串的长度
#include
char *fun(char *s,char *t)
{
char *p=s,*q=t;
while(*p||*q)
{
if(*p==NULL&&*q!=NULL)
return t;
if(*p==NULL&&*q==NULL)
return s;
if(*p!=NULL&&*q==NULL)
return s;
p++;
q++;
}
}
int main()
{
char a[20],b[20];
void NONO();
printf("Input 1th String:");
gets(a);
printf("Input 2th String:");
gets(b);
printf("%s\n",fun(a,b));
NONO();
}
void NONO()
{
FILE *fp,*wf;
int i;
char a[20],b[20];
fp=fopen("in.dat","r");
wf=fopen("out.dat","w");
for(i=0;i=m)
p=s;
else
p=t;
return p;
}
C语言中常见的字符串操作函数
函数名: strcpy
功 能: 拷贝一个字符串到另一个
用 法: char *strcpy(char *destin, char *source);
#include
#include
int main()
{
char desstr[10];
char *srcstr = "abcdefg";
strcpy(desstr,srcstr);
printf("%s\n",desstr);
}
函数名: strcat
功 能: 字符串拼接函数
用 法: char *strcat(char *destin, char *source);
#include
#include
int main()
{
char temstr [50] = {0};
char *desstr = "123456";
char *srcstr="789";
char *temp = NULL;
strcpy(temstr,desstr);
strcat(temstr,srcstr);
temp = strchr(temstr,'7');
printf("%s",temp);
}
函数名: strchr
功 能: 在一个串中查找给定字符的第一个匹配之处
用 法: char *strchr(char *str, char c);
说明:返回首次出现c的位置的指针,返回的地址是被查找字符串指针开始的第一个与Val相同字符的指针,如果s中不存在c则返回NULL。
#include
#include
int main()
{
char temstr [50] = {0};
char *desstr = "123456";
char *srcstr="789";
strcpy(temstr,desstr);
strcat(temstr,srcstr);
printf("%s",temstr);
}
函数名: strcmp
功 能: 串比较
用 法: int strcmp(char *str1, char *str2);
看Asic码,str1>str2,返回值 > 0;两串相等,返回0
/*
当s1s2时,返回正数
*/
#include
#include
int main()
{
char string[20];
char str[3][20];
int i;
for(i=0;i0)
strcpy(string,str[0]);
else
strcpy(string,str[1]);
if(strcmp(str[2],string)>0)
strcpy(string,str[2]);
printf("\nThe largest string is%s\n",string);
return0;
}
函数名: strcspn
功 能: 在串中查找第一个给定字符集内容的段
用 法: int strcspn(char *str1, char *str2);
函数说明:strcspn()从参数s 字符串的开头计算连续的字符, 而这些字符都完全不在参数reject 所指的字符串中. 简单地说, 若strcspn()返回的数值为n, 则代表字符串s 开头连续有n 个字符都不含字符串reject 内的字符.
返回值:返回字符串s 开头连续不含字符串reject 内的字符数目
#include
#include
int main()
{
char *desstr = "holle ,hi 123";
char *srcstr=",";
int relust = 0;
relust = strcspn(desstr,srcstr);
printf("%d",relust);
}
函数名: strdup
功 能: 将串拷贝到新建的位置处
用 法: char *strdup(char *str);
功 能: 将串拷贝到新建的位置处
strdup()在内部调用了malloc()为变量分配内存,不需要使用返回的字符串时,需要用free()释放相应的内存空间,否则会造成内存泄漏。
#include
#include
#include
int main(void)
{
char *dup_str, *string = "abcde";
dup_str = strdup(string);
printf("%sn", dup_str);
free(dup_str);
return 0;
}
函数名: stricmp
功 能: 以大小写不敏感方式比较两个串
用 法: int stricmp(char *str1, char *str2);
#include
#include
int main(void)
{
char *buf1 = "BBB", *buf2 = "bbb";
int ptr;
ptr = stricmp(buf2, buf1);
if (ptr > 0)
printf("buffer 2 is greater than buffer 1n");
if (ptr len){
n=len;
}
//int start=len-n;
//q=q+start;
q+=len-n;
while(n--) *(p++)=*(q++);
*(p++)='\0';
return dest;
}
从中间某处截取一定长度的的子字符串:
static char* cut_substr(char *dest,const char *src ,char start,int n){
char *p=dest;
char *q=src;
chsr *temp=NULL;
int len=strlen(src);
if(start>=len || startstrlen(temp)){//注意这里,截取长度如果超过了src剩余的长度则只截取到src的最后,以避免内存越界;
n=strlen(temp);
}
q+=start;
while(n--) *(p++)=*(q++);
*(p++)='\0';
return dest;
}