**1、原型:void *memcpy(void dest, const void src, size_t n);
功能:从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中;
memcpy没有考虑重叠的情况;
#include <stdio.h>
#include <string.h>
void *my_memcpy(void *dest,const void *src,size_t n)
{
char *p = dest;
const char *q = src;
int count = 0;
while(*p!='\0'&&count<n)
{
*p = *q;
p++;
q++;
count++;
}
return dest;
}
int main()
{
char str1[20];
char str2[20];
scanf("%s%s",str1,str2);
printf("%s\n",memcpy(str1,str2,3));
printf("%s\n",my_memcpy(str1,str2,3));
return 0;
}
2、通过编程,实现字符串逆序
char temp[20]; //全局变量
char * sort(char str[])
{
//char temp[20];
int len= strlen(str);
int i = 0;
int j = len;
while(j>=0)
{
temp[i]=str[j-1];
i++;
j--;
}
temp[i] = '\0'; //数组需要输出是要加\0
return temp;
}
//通过编程,实现 I am from shanghai 逆序输出shanghai from am I;
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void reverse(char *str,int len) //字符串倒置函数
{
int i =0;
char temp;
while(i<len/2)
{
temp = str[i];
str[i] = str[len-i-1];
str[len-i-1] = temp;
i++;
}
}
void fun(char *str,int len)
{
int count = 0;
reverse(str,strlen(str)); //倒置所有字符串
printf("%s\n",str);
while(*str !='\0')
{
if(*str ==' ')
{
reverse(str-count,count); //倒置各个单词
str++;
count = 0;
}
count++;
str++;
}
reverse(str-count,count); //最后一个单词
}
int main()
{
char str[20];
gets(str);
int len = strlen(str);
fun(str,len);
printf("%s\n",str);
return 0;
}
用C写一个输入的整数,倒着输出整数的函数,要求用递归方法;
#include <stdio.h>
void fun(int i)
{
printf("%d",i%10);
i = i/10;
if(i>0)
{
fun(i);
}
}
int main()
{
int i;
scanf("%d",&i);
fun(i);
printf("\n");
}