
数组
youfuwenn
所有内容的主要目的是自我学习
展开
-
实现memcpy
void* my_memcpy(void* dest,const void* src,size_t num){ char*p = (char*)dest;//因为dest是void*所以不能直接解引用和加加(运算)所以可以先把他赋值给一个char* //然后逐字节赋值。 char*q = (char*)src; while (num--)//num 为多少,就能循环几次。 { *p = *q; p++; q++; } return dest;}int main(){.原创 2021-10-28 22:28:00 · 86 阅读 · 0 评论 -
2.判断一个字符串是否为另外一个字符串旋转之后的字符串。例如:给定s1 =AABCD和s2 = BCDAA,返回1给定s1=abcd和s2=ACBD,返回0.AABCD左旋一个字符得到ABCD
void left_move(char s1[], int i){ int len = strlen(s1); while (i--) //若i为2,该循环就执行两次,每一次就是左旋转1个字符 { int j = 0; char temp = s1[0]; for (j = 0; j < len - 1; j++) { s1[j] = s1[j + 1]; } s1[j] = temp; }}int panA(char s1[], char s2[].原创 2021-10-26 21:00:31 · 103 阅读 · 0 评论 -
1.实现一个函数,可以左旋字符串中的k个字符。ABCD左旋一个字符得到BCDA ABCD左旋两个字符得到CDAB(左旋转字符的操作)
void left_move(char arr[], int k){ int i = 0; int sz = strlen(arr); int j = sz - k; while (j < sz) { arr[i] = arr[i] ^ arr[j]; arr[j] = arr[i] ^ arr[j]; arr[i] = arr[i] ^ arr[j]; i++; j++; }}int main(){ char arr[] = "ABCD"; int k =.原创 2021-10-25 11:15:01 · 147 阅读 · 0 评论