寫一個函式,完成記憶體之間的拷貝。[考慮問題是否全面]
#include "stdafx.h" #include <stdio.h> #include <string.h> #include <assert.h> void *memmove(void *dest, const void *src, size_t count) { assert((dest != NULL) && (src != NULL)); //安全檢查 assert(count > 0); char *psrc = (char *)src; char *pdest = (char *)dest; //檢查是否有重疊問題 if (pdest < psrc) { //正向拷貝 while (count--) *pdest++ = *psrc++; } else if (psrc < pdest) { //反向拷貝 psrc = psrc + count - 1; pdest = pdest + count - 1; while (count--) *pdest-- = *psrc--; } return dest; } void *memmcpy(void *dest, const void *src, size_t count) { assert((dest != NULL) && (src != NULL)); //安全檢查 assert(count > 0); char *psrc = (char *)src; char *pdest = (char *)dest; while (count--) *pdest++ = *psrc++; return dest; } int main() { char str[] = "helloworld!"; memmove(str + 3, str, 4); char str1[] = "helloworld!"; memmcpy(str1 + 3, str1, 4); printf("%s\n", str); printf("%s\n", str1); getchar(); return 0; }
相關推薦
寫一個函式,完成記憶體之間的拷貝。[考慮問題是否全面]
#include "stdafx.h" #include <stdio.h> #include <string.h> #include <assert.h> vo
寫一個函式,使給定的一個二維陣列(3×3)轉置,即行列互換。
import java.util.Scanner; public class Main { public static void main(String[] args) { &n
寫一個函式,將3 3矩陣轉置
#include "stdio.h" void Transpose(int (*matrix)[3]) { int temp; int i, j; &
YTUOJ——寫一個函式,使給定的一個二維陣列(3×3)轉置,即行列互換
題目描述 寫一個函式,使給定的一個二維陣列(3×3)轉置,即行列互換。 輸入 一個3x3的矩陣 輸出 轉置後的矩陣 樣例輸入 1 2 3 4 5 6 7 8 9 樣例輸出 1 4 7 2 5 8 3 6 9 答案 #include "iostream
寫一個函式,隨機生成N條不重複的手機號
方法一:import random def phone(count): results = [] while len(results)!=count: starts = [138,156,130,170,188,189] start = random.ch
寫一個函式,輸入一個數,隨機生成N條郵箱
寫一個函式,這個函式的功能是,傳入一個數字,產生N條郵箱,產生的手機號不能重複。郵箱前面的長度是6 - 12之間,產生的郵箱必須包含大寫字母、小寫字母、數字和特殊字元 import random
ACMNO.24 C語言-轉置矩陣 寫一個函式,使給定的一個二維陣列(3×3)轉置,即行列互換。 輸入 一個3x3的矩陣 輸出 轉置後的矩陣 樣例
題目描述 寫一個函式,使給定的一個二維陣列(3×3)轉置,即行列互換。 輸入 一個3x3的矩陣 輸出 轉置後的矩陣 樣例輸入 1 2 3 4 5 6 7 8 9 樣例輸出 1 4 7 2 5 8 3 6 9 來源/分類 C語言
寫一個函式,求兩個整數之和,要求在函式體內不得使用+、-、*、/四則運算子號
思路:首先看十進位制是如何做的: 5+7=12,三步走第一步:相加各位的值,不算進位,得到2。第二步:計算進位值,得到10. 如果這一步的進位值為0,那麼第一步得到的值就是最終結果。第三步:重複上述兩步,只是相加的值變成上述兩步的得到的結果2和10,得到12。同樣我們可以用三
某公司的僱員分為以下若干類。寫一個程式,把若干各種型別的員工放在一個Employee 數組裡,寫一個函式,打印出某月每個員工的工資數額
某公司的僱員分為以下若干類:Employee:這是所有員工總的父類,屬性:員工的生日月份。方法:getSalary(int month) 根據引數月份來確定工資,如果該月員工過生日,則公司會額外獎勵100 元。SalariedEmployee:Employee 的子類,拿固定工資的員工。屬性:月薪Hourly
寫一個函式,輸入int型,返回整數逆序後的字串。如:輸入123,返回“321”。 要求必須用遞迴,不能用全域性變數,輸入必須是一個引數,必須返回字串
看了一下這個文章http://www.codeceo.com/article/alibaba-interview-java.html 順手寫了下 應該符合題目意思吧~~ #include <cstdio> #include <iostream> #i
8.7 有一字串,包含n個字元。寫一個函式,將此字串從第 m個字元開始的全部字元複製成為另一個字串。
8.7 有一字串,包含n個字元。寫一個函式,將此字串從第 m個字元開始的全部字元複製成為另一個字串。個人程式碼如下:#include<stdio.h> #include<string.
寫一個函式,實現一個整形有序陣列的二分查詢
程式程式碼: #include <stdio.h> #include <windows.h> int binary_search(int arr[], int num, int
c++寫一個函式,實現輸入一個字串,將其中的字元按逆序輸出
#include "stdafx.h" #include <iostream> #include <string.h> using namespace std; #define N 20 int _tmain(int argc, _TCHAR* argv[]) {
c語言 寫一個函式,輸入n,求斐波拉契數列的第n項(5種方法,層層優化)
寫一個函式,輸入n,求斐波拉契數列的第n項。 斐波拉契數列:1,1,2,3,5,8...,當n
用javascript寫一個函式,作用是去除字串前後空格
<html> <head></head> <body> <script> function trim(str){ return str.replace(/(^\s*)||(\s*$)/g,""
題目:寫一個函式,求兩個整數之和,要求在函式體內不得適用+,-,* ,./ 四則運算子號
題目:寫一個函式,求兩個整數之和,要求在函式體內不得適用+,-,* ,./ 四則運算子號 面試的時候被問道這個問題,首先我們分析人們是如何進行十進位制的加法的,比如如何得出5+17=22這個結果的,實際上,我們可以分三步進行:第一步只做各位相加不進
用java寫一個函式,實現Fibonacci數列演算法(1,1,2,3,5,8,13......)
這個演算法就是第一個數的救國是前兩個數相加, 這個還是結合例子比較好想 public class dd1 { public void getFibonacci(int number){ int nLeft = 0; int nRight = 1; System.out.pr
c語言:寫一個函式,輸入n,求斐波拉契數列的第n項(5種方法,層層優化)
寫一個函式,輸入n,求斐波拉契數列的第n項。斐波拉契數列:1,1,2,3,5,8...,當n大於等於3時,後一項為前面兩項之和。解:方法1:從斐波拉契數列的函式定義角度程式設計#include<stdio.h>int fibonacci(int n){int nu
寫一個函式,儘可能高效的從一個標準url中取出檔案的副檔名
<?php function getExt($url) { $arr = parse_url($url);//parse_url解析一個 URL 並返回一個關聯陣列,包含在 URL 中出現的各種組成部分 //'scheme' => string '
寫出一個函式,返回0-20之間的隨機整數
直接看程式碼。 function suiji(){ var a= Math.floor(Math.random()*21); // Math.random() 返回 大於或等於0 且 小於1 的小數,