学习C语言的第27天

发布时间:2024年01月23日

字符串逆置

#include<stdio.h>
int strlen(char*ch)
{
	int i=0;
    while(ch[i]!='\0')
    {
        i++;
    }
    return i;
}
void inverse(char*ch)
{
    int i=0;
    int j=strlen(ch)-1;
    while(i<j)
    {
        char temp=ch[i];
        ch[i]=ch[j];
        ch[j]=temp;
        i++;
        j--;
    }
}
int main()
{
    char ch[]="hello world";
    inverse(ch);
    printf("%s\n",ch);
    return 0;
}
输出结果:dlrow olleh

回文字符串

#include<stdio.h>
int strlen(char*ch)
{
	int i=0;
    while(ch[i]!='\0')
    {
        i++;
    }
    return i;
}
int symm(char*ch)
{
	char*f=ch;
	char*t=ch+strlen(ch)-1;
	while(f<t)
	{
		if(*f!=*t)
		{
			return 1;
			f++;
			t++;
		}
	}
	return 0;
}
int main()
{
	char ch[]="abcddcba";
	int v=symm(ch);
	if(!v)
	{
		printf("相同\n");
	}
	else
	{
		printf("不相同\n");
	}
	return 0;
}
输出结果:相同

字符串拷贝

strcpy()

char * *strcpy(char **dest,const char *src)

? 功能把str所指向的字符串复制到dest是指向的空间中,'\0’也会拷贝进去

如果参数dest是指向的内存空间不够大,看你会造成缓冲溢出的错误情况

#include<stdio.h>
void strcpy(char*dest,const char*src)
{
    while(*dest++==*src++);
}
int main()
{
    char ch[]="hello";
    char str[100];//100,提供足够大的内存空间
    strcpy(str,ch);
    printf("%s\n",str);
    return 0;
}
输出结果:hello

字符串有限拷贝

strncpy()

char * strncpy(char *dest,char *src,size_t num)

? 功能把str所指向的字符串的前n个复制到dest是指向的空间中,是否拷贝结束符看指定的长度是否包括’\0’

#include<stdio.h>
void strncpy(char*dest,const char*src,size_t n)
{
    while((*dset++==*src++)&&--n);//n=0时,也会进行赋值
}
int main()
{
    char ch[]="hello world";
    char str[100]={0};//不一定将'\0'拷贝,需要对此数组进行初始化
    strncpy(str,ch);
    printf("%s\n",str);
    return 0;
}
输出结果:hello
文章来源:https://blog.csdn.net/2301_79690656/article/details/135796072
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。