一张纸,一杆笔,足以,笔试么,肯定是没有电脑的
实现strcat函数格式:extern char *strcat(char *dest,char *src);功能:把src所指字符串添加到dest结尾处并添加'\0';返回:指向dest的指针。实现:char *Mystrcat(char*dest,const char*src){ char *mydest = dest; while ('\0' != *dest) { dest++; } while ('\0' !=(*dest++ = *src++)) { NULL; } return mydest;}
实现strcpy函数格式:extern char *strcpy(char *dest,char *src);功能:把src所指由NULL结束的字符串复制到dest所指的数组中。返回:指向dest的指针。char *mystrcpy(char *strDest, const char *src);{ char *mydest = strDest; while(*strDest++ = *src++); return mydest;}
实现strcmp函数原型:extern int strcmp(char *str1,char * str2);功能:比较字符串s1和s2;返回:当s1
实现strlen函数原型:extern unsigned int strlen(char *s);功能:计算字符串s的(unsigned int型)长度;返回:返回s的长度(请注意是无符号整型),不包括结束符NULL。int mystrlen(const char *str){ int len = 0; while ('\0' != *str++) { len++; } return len;}OK,这里补充一种方法,也是笔试常考的题目:不用中间变量,实现strlenint mystrlen(const char *str){ if ('\0' == *str ) { return 0; } return mystrlen(str+1)+1;}
strcpy解析extern char *strcpy(char *dest,char *src);1.strcpy只用于字符串的复制。2.strcpy会复制最后的结束符3.函数会一直拷贝字符串的内容,直到遇到‘\0’
memcpy解析void *memcpy(void *s1, const void *s2, size_t n);1.内存复制2.对复制的内容没有限制3.将一个大小为n的内存段的值拷贝到另一内存段中
strncpy解析char *strncpy(char *s2, const char *s1, size_t n);1.该函数用于拷贝count个字符。2.调用完该函数后一定要加上一句:dst[count] = '/0';因为可能拷贝的n个字符中,没有‘\0’
memset解析void *memset(void *s, int ch, size_t n);1.将s中前n个字节 用 ch 替换并返回 s。2.常用作字符串等清零。
普通逆序char *reverse(char *s){ char *q = s; while (*q) q++; q -=1; char *p = (char *)malloc(sizeof(char)*(q-s+2)); char *r = p; while (q >= s) { *p++ = *q--; } *p = '\0'; return r;}
在不允许分配额外的空间的情况下,完成字符串的逆序char *reverse(char *s){ char *p = NULL; char *q = NULL; char temp; p = q = s; while (*q) { q++; } q--; while (p < q) { temp = *p; *p = *q; *q = temp; } return s;}
不允许有变量的逆序char *reverse(char *s){ char *p = NULL; char *q = NULL; p = q = s; while (*q) { q++; } q--; while (p < q) { *p = *p^*q; *q = *p ^ *q; *p = *p ^ *q; p++;q++; } return s;}
按单词逆序给定一个字符串,按单词将该字符串逆序,比如给定'This is a sentence',则输出是'sentence a is This',为了简化问题,字符串中不包含标点符号。1.按照单词逆序:'sihT si a ecnetnes'2.按照句子逆序:'sentence a is This'void reverseword(char *p,char *q){ while (p < q) { *p = *p ^ *q; *q = *p ^ *q; *p = *p ^ *q; p++; q++; } return; }char *reverse(char *s){ char *p = NULL; char *q = NULL; p = s; q = s; while (*q) { if (' ' == *q) { reverseword(p,q); q++; p = q; } else { q++; } } reverseword(p,q-1); reverseword(s,q-1);}
递归实现反向输出字符串void reverse(char *str) { if(*str != '/0') reverse(str + 1); printf('%c', *str); }
整数转换为字符串,并且不调用itoa1.整数的每一位加上‘0’转换为字符串2.将字符串翻转int main(int argc,char **argv){ int num = 12345; char p[7]; char q[7]; int i = 0; int j = 0; while (num) { p[i] = num%10+'0'; i++; num = num/10; } p[i]='\0'; i--; while (i>=0) { q[j] = p[i]; j++; i--; } q[j] = '\0';}
字符串转换为整数1.字符串减去‘0’就会隐性转换为int2.再乘以10累加法计算int main(int argc,char **argv){ int i = 0,sum = 0; char temp[7] = {'1','2','3','4','5','\0'}; while (temp[i]) { sum = sum*10 + (temp[i]- '0'); i++; }}
笔试题,不要求你写的很准确,或者一定要编译通过,只要大概思路正确,就没有问题