第一题:
#include<stdio.h>
#include<assert.h>
char* My_strncpy(char* dest, const char* src, int n)
{
assert(dest!=NULL && src!=NULL);
char* p=dest;
int i=0;
while(i++ < n && (*p++ = *src++)!='\0')
{}
if(*(p)!='\0')
*p='\0';
return dest;
}
int main()
{
char dest[17] = "";
char *src = "abcdefdecgsa";
printf("%s\n",My_strncpy(dest,src,7));
return 0;
}
第二题:
#include<stdio.h>
#include<assert.h>
char *My_strncat(char *dest,const char *src,int n)
{
assert(dest != NULL && src != NULL);
char *p = dest;
while (*dest != '\0')
{
dest++;
}
while (n && (*dest++ = *src++) != '\0')
{
n--;
}
dest = '\0';
return p;
}
int main()
{
char dest[20] = "abcdef";
char *src = "ghigd";
printf("%s\n",My_strncat(dest,src,4));
return 0;
}
第三题:
#include<stdio.h>
#include<assert.h>
#include<string.h>
int My_strncmp ( char *dest, char *src, int n)
{
if ( !n )
{
return 0;
}
while ((n --) > 0 && (*dest!= '\0' || *src!= '\0'))
{
if(*dest == *src)
{
dest++;
src++;
continue;
}
else if( *dest> *src)
{
return 1;
}
else
{
return -1;
}
}
return 0;
}
int main()
{
char dest[20] = "abcdef";
char src[20] = "acbd";
int p=My_strncmp(dest,src,4);
printf("%d\n",p);
return 0;
}
字符串中单词的个数:
#include<stdio.h>
int Sum_G(char *ch)
{
int word=1;
while(*ch!='\0')
{
if(*ch==' ')
{
word++;
}
ch++;
}
return word;
}
int main()
{
char ch1[80]="I am a girl";
char ch2[80]="I am a beautiful girl";
char ch3[80]="I am a beautiful girl and my sisiter is also is a beautiful girl";
int a1=Sum_G(ch1);
int a2=Sum_G(ch2);
int a3=Sum_G(ch3);
printf("%d,%d,%d\n",a1,a2,a3);
return 0;
}
//如何判断当前设备是大端还是小端 用指针判断
#include<stdio.h>
int Ch_T(int n)
{
unsigned char str[4]={1,0,0,0};
unsigned int* i = (unsigned int*) str;
if(*i == 1)
{
return -1;
}
else if(*i == 1000000)
{
return 1;
}
return 0;
}
int main()
{
int a=Ch_T(1234);
printf("%d\n",a);
return 0;
}