1. 程式人生 > >【C語言】 實現memset

【C語言】 實現memset

void *memset(void *s, int ch, size_t n);
函式解釋:將s中後n個位元組(typedef unsigned int size_t)用 ch 替換並返回 s 
memset:作用是在一段記憶體塊中填充某個給定的值,它是對較大的結構體或陣列進行清零操作的一種最快方法。

#include<stdio.h>
#include<assert.h>

void *my_memset(void *arr,int c,size_t n)
{
	assert(arr);	
	char *dest = (char *)arr;
	int i = 0;
	for(i = 0;i < n;i++)
	{
		*(dest + i) = c;
	}
	return arr;
}
int main()
{
	char arr[10];
	int i = 0;
	memset(arr,0,10);
	for(i = 0;i < 10;i++)
	{
		printf("%d ",arr[i]);
	}
	printf("\n");
	return 0;
}

本文出自 “Vs呂小布” 部落格,謝絕轉載!

相關推薦

C語言 實現memset

void *memset(void *s, int ch, size_t n); 函式解釋:將s中後n個位元組(typedef unsigned int size_t)用 ch 替換並返回 s  mem

C語言實現一個計算器(兩種方式)

1.使用switch…case…語句實現 #define _CRT_SECURE_NO_DEPRECATE 1 #include <stdio.h> #include <stdlib.h> int add(int x, int y) {   &nb

C語言實現對一個8bit資料(unsigned char 型別)的指定位(例如第n位)的置0或者置1操作,並保持其他位不變

請編碼實現以下功能的函式 功能:實現對一個8bit資料(unsigned char 型別)的指定位(例如第n位)的置0或者置1操作,並保持其他位不變。 函式原型:void bit_set(unsigned char *p_data,unsigned char position,int flag)

C語言實現小遊戲掃雷

用C語言實現掃雷小遊戲,一共有三部分的程式碼 game.h #ifndef __GAME_H_ #define __GAME_H_ #include <stdio.h> #include <stdlib.h> #include <time.h> #def

C語言實現小遊戲三子棋

三子棋的規則:在九宮格棋盤中,只要橫、豎、對角線都能走成一條直線,就贏了。 我將實現三子棋遊戲的程式分為三個部分 第一部分:標頭檔案 game.h #ifndef _GAME_H_ #define _GAME_H_ #include <string.h> #include

C語言實現對一個8bit資料的指定位的置0或者置1操作,並保持其他位不變。

給定函式原型:void bit_set(unsigned char *p_data,unsigned char positin,int flag) 引數說明:p_data是指定的源資料;position是指定位(取值範圍為1~8);flag表示置0還是

C語言實現俄羅斯方塊

學習了C語言,寫一個俄羅斯方塊,程式碼絕對可以執行 大神勿笑,只適合初學者 本人也是菜鳥 1、考慮怎麼儲存俄羅斯方塊 俄羅斯方塊的形狀一共有19種類型,如果拿陣列來表示的話,可能會比較會浪費空間(網上有很多實現程式碼) 考慮到每種方塊形狀的

C語言實現對一個8bit資料(unsigned char)型別的指定位的置0或置1操作,並保持其他位不變

功能:實現對一個8bit資料(unsigned char)型別的指定位(例如第n位)的置0或置1操作,並保持其他位不變。 函式原型:void bit_set(unsigned char *p_data

c語言實現strchr

// 實現strchr(在一個字串中查詢字元,找到的話返回指向該字元的指標,沒找到的話返回空) #include <stdio.h> #include <assert.h> char * my_strchr( char const *str, c

c語言實現對一個8bit資料(unsigned char 型別)的指定位(例如第n位)置0或者置1操作,並保持其他位不變

// 實現對一個8bit資料(unsigned char 型別)的指定位(例如第n位)置0或者置1操作,並保持其他位不變 #include <stdio.h> void bit_set(unsigned char *p_data, unsigned char

C語言實現一個函式翻轉字串

實現一個函式翻轉字串 思路:->實現翻轉 1.翻轉即前後交換 2.對於字串前後交換直到中間一個字元終止迴圈 3.令(start++)<(end–)迴圈條件不滿足退出 #incl

C語言實現一個函式,可以左旋字串中的k個字元。

.實現一個函式,可以左旋字串中的k個字元。 AABCD左旋一個字元得到ABCDA AABCD左旋兩個字元得到BCDAA 思路: 1.如果直接進行左移,肯定會存在陣列前面的元素丟失。 解決辦法:

c語言實現翻轉字串函式reverse_string

函式reverse_string(char * string) 實現:將引數字串中的字元反向排列。 要求:不能使用C函式庫中的字串操作函式。 #include <stdio.h> #in

C語言模擬實現atoi

題目:請程式設計寫程式實現字串到整數的轉換,例如輸出字串“12345”,輸出整數12345. 分析:不僅要考慮給的是字元字串,還要考慮空白字元,正負號,空字串,以及越界訪問問題 #include <stdio.h> #include <stdlib.h> #include

c語言利用指標模式實現字串函式(strlen、strcat、strstr、strcpy、strcmp、memcpy、memove)

模擬實現strlen int my_strlen(const char *p) { assert(p != NULL); char *s = p; while (*p) { p++; } r

分治法實現大整數乘法C++語言

如果實現傳統演算法中兩個n位整數相乘,第一個整數中的n個數字都要分別乘以第二個整數的n個數字,這樣就一共要做n*n次乘法。看上去設計一個乘法次數少於n*n的演算法是不可能的,但事實證明並非如此,可以使用分治的思想計算兩個大整數的相乘。 首先從僅有兩位數字的兩個數12和34考慮,12 = 1 *

C語言一個數組中只有兩個數字是出現一次,其他所有數字都出現了兩次。 找出這兩個數字,程式設計實現

一看到這道題,我想到了之前學習過的異或。我們知道兩個相同的數字異或的結果是 0,因為在計算機中,異或運算是按照二進位制位來運算的,相同為 0 ,相異為  1。任何數與 0 異或都等於它自己。既然我們要找出來一組數中不同的兩個數字,也可以採用這種方法。 但是這次不是直接異或,

C語言字串函式的實現

求字串的長度 strlen 長度不受限制的字串函式 strcpy strcat strcmp 長度受限制的字串函式 strncpy strncat strncmp 字串查詢 strc

C語言自己編寫程式實現strrchr函式,即在給定字串中找特定的字元並返回最後出現的位置

//自己編寫程式實現strrchr函式,即在給定字串中找特定的字元並返回最後出現的位置 #include <stdio.h> #include <string.h> char

C語言模擬實現strcpy strcat strstr strcmp

模擬實現strcpy(字串拷貝) 這道題,是將原字串的內容拷貝到目標字串中去,一個字元一個字元的拷貝直到遇到 ‘\0’ ,將它也拷貝過去後停止。  #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include&