C 语言面试题小结

1  用两个栈实现一个队列的功能

2 关于strcpy

a   strcpy(s1,s2) strcpy是把字符串s2中的内容copy到s1,包括字符串的结束标志也一起copy

b  找错

void test1()
{
 char string[10];
 char *str1="0123456789";
 strcpy(string,str1);
}

会引起数组下标越界

void test2()
{
 char string[10],str1[10];
 int i;
 for(i=0;i<10;i++)
 {
  str1[i]='a';
 }
 strcpy(string,str1);
}

void test3(char*str1)
{
 char string[10];
 if(strlen(str1)<=10)
 {
  strcpy(string,str1);
 }
}

strlen(str1)<=10应改为 strlen(str1)<10

strcpy的完整实现

char *strcpy(char *strDest,const char *strSrc)
{
 
assert((strDest!=NULL)&&(strSrc!=NULL));
 
char *address=strDest;
 
while((*strDest++=*strSrc++)!=\0);
  
return address;
}


你可能感兴趣的:(c,面试,语言)