字符串的相关问题

/*
6.编程 实现 memcpy()  函数,
大家可能都知道: 


  原型:extern void *memcpy(void *dest, void *src, unsigned int count);


用法:#include <string.h>


功能:由src所指内存区域复制count个字节到dest所指内存区域。

*/

下面就是 这个函数的实现过程。


#include  <stdio.h>
#include <stdlib.h>
#include <assert.h>
void*  memcpy (void * to,void * from, unsigned int count){


	assert ((to!= NULL)&&(from!=NULL));//保证 from 和to 的合法性

	char *temFrom = (char*)from ;
	char * temTo =  (char*)to;
	while (count-->0){//先去判断 ,之后 自减一,
		*temTo++ = *temFrom++ ; //先赋值 ;之后指针加一
		
	}
	return  to;//返回头指针


}
下面我们来测试一下
void  main (){


	char  string [] = "Hello everyone!";
	char  string1[20];
	memcpy (string1,string,5);
	string1[5]= '\0';//最后一个位置设置为空

	printf ("string1:%s\n",string1);
	system("pause");
}

/*
 26题:编程实现删除字符中所有的指定字符
*/
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>



char * deleteChar (char *str,char c){
	char *head =  NULL;
	char *p  = NULL;
	if (str  == NULL){
		return  NULL;
	}
	head = p= str;//指向字符串头部,
	while(*p)
	{//(*p++),之后把 p++ 删除能这样写吗?,因为这样的判断*p ,后 p 自增1 ,p指到下一个位置了,即从第二个位置开始赋值了,
		if (*p != c){
		//	*str++ = *p; //注释部分和这句话等价,即先赋值,之后str ++;
			*str = *p;
			str++;
		
		}
		p++;
	}
	*str = '\0';
	return  head;
}
//写一个测试程序如下:


int main(){
	char string[] = "chang chang chang";
	char c  =0;
	printf ("请输入一个字符:");
	scanf ("%c",&c);
	printf ("%s\n",string);


	char *p = 	deleteChar (string,c);
	printf ("%s\n",string);
	system("pause");
	return 0;
}













这里写这些仅供和一些编程爱好者进行交流,分享。

全部评论

相关推荐

10-13 22:56
门头沟学院 C++
rt,鼠鼠的浪潮网签明天过期,鼠鼠是山东人,好像自己也能接受。之前的面试大厂基本挂干净了,剩下小米二面后在泡,问了下面试官没有挂,但要泡。还有海信似乎也通过了,不过在深圳,鼠鼠也不是很想去。其它还有一些公司应该陆陆续续还有一些面试,现在有些纠结是直接签了还是再等再面呢?大佬们能不能给鼠鼠提一些意见,万分感谢!!!
牛客78696106...:浪潮可不是开摆,当初我还是开发的时候我组长跟我说他们组有段时间天天1,2点走,早上5点就来,全组肝出来心肌炎,浪潮挣钱省立花可不是说说,当然也看部门,但是浪潮普遍就那dio样,而且你算下时薪就知道不高,没事也是9点半走,不然算你旷工
投递小米集团等公司10个岗位
点赞 评论 收藏
分享
09-08 17:17
同济大学 Java
狗不理fe:里面的人劝一句,别来虾,我们部门24校招生淘汰率30%,还有一些人说有一年保护期,不可能!!!
我的秋招日记
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务