任何類型的數(shù)組都可以,實際上memset函數(shù)是對某一個地址以及該地址之后的一串空間進行賦值操作,只要是地址值,都可以被賦值。\x0d\x0a1、memset是計算機中C/C++語言函數(shù)。將s所指向的某一塊內(nèi)存中的前n個 字節(jié)的內(nèi)容全部設置為ch指定的ASCII值, 第二個值為指定的內(nèi)存地址,塊的大小由第三個參數(shù)指定,這個函數(shù)通常為新申請的內(nèi)存做初始化工作, 其返回值為指向s的指針。\x0d\x0a2、函數(shù)介紹:void *memset(void *s, int ch, size_t n);\x0d\x0a函數(shù)解釋:將s中前n個字節(jié) (typedef unsigned int size_t )用 ch 替換并返回 s 。\x0d\x0amemset:作用是在一段內(nèi)存塊中填充某個給定的值,它是對較大的結(jié)構(gòu)體或數(shù)組進行清零操作的一種最快方法。
成都創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供市中網(wǎng)站建設、市中做網(wǎng)站、市中網(wǎng)站設計、市中網(wǎng)站制作等企業(yè)網(wǎng)站建設、網(wǎng)頁設計與制作、市中企業(yè)網(wǎng)站模板建站服務,十余年市中做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡服務。
方法1:使用運行庫函數(shù)memset():
memset(str, 0, sizeof(str));
方法2:使用Windows API函數(shù)ZeroMemory():
ZeroMemory(str, sizeof(str));
但不能用于指針。指針的情況下,必須這樣:
struct mystr {.......} *p;
...
memset(p, 0, sizeof(struct mystr));
或:
ZeroMemory(p, sizeof(struct mystr));
c語言不能對這個數(shù)組賦值,只能通過遍歷數(shù)組達到給數(shù)組中每個元素賦值的目的。初始化的時候可以用inta[4]={0};這樣給整個數(shù)組元素賦值為0,若想給已初始化的數(shù)組清零,也只能遍歷數(shù)組。
在C語言中,所謂的“清空”,意思是“無視里面的數(shù)據(jù)”,而不是“讓里面沒有數(shù)據(jù)”。有時候可能需要把一個數(shù)組清零,意思是全部數(shù)據(jù)都用0填充,可以用庫函數(shù)來實現(xiàn)。假設數(shù)組名為a,無論什么類型也無論幾維都一樣,可以寫成memset(a,0,sizeof(a));
擴展資料:
在C語言中, 數(shù)組屬于構(gòu)造數(shù)據(jù)類型。一個數(shù)組可以分解為多個數(shù)組元素,這些數(shù)組元素可以是基本數(shù)據(jù)類型或是構(gòu)造類型。因此按數(shù)組元素的類型不同,數(shù)組又可分為數(shù)值數(shù)組、字符數(shù)組、指針數(shù)組、結(jié)構(gòu)數(shù)組等各種類別。
關(guān)于可變長數(shù)組(VLA)的問題:原來的C89標準中是不允許可變長數(shù)組出現(xiàn)的,但是在C99標準中,加入了對VLA的支持,但是支持的編譯器不多,而且由于棧溢出的安全問題,沒有太多的人敢用這個可變長數(shù)組,所以在C11標準中又把它規(guī)定為可選實現(xiàn)的功能了。
參考資料來源:百度百科-數(shù)組
fclose(fp);當然不行,它不是清除文件而是關(guān)閉文件。fp=fopen("a.txt","w");肯定清除當前目錄下名為a.txt文件的內(nèi)容,只留下一個文件名——你說沒有清除那只是路徑?jīng)]有寫全——我的工作代碼就這樣用著:每月1號0點自動清除上月記錄,開始本月新記錄。如果你說的是連文件名都清除的函數(shù),那叫刪除文件,有個函數(shù)叫remove(FILE *);,你可以一試。
#includestdio.h
#includestring.h
int main()
{
char a[10];
scanf("%s",a);
memset(a,'\0',sizeof(a));
printf("%s\n",a);
}
//本函數(shù)段就是利用memset函數(shù)將數(shù)組a清零
所以就是使用 memset(a,'\0',sizeof(a));
字符串函數(shù)string.h
在頭文件string.h中定義了兩組字符串函數(shù)。第一組函數(shù)的名字以str開頭;第二組函數(shù)的名字以mem開頭。只有函數(shù)memmove對重疊對象間的拷貝進行了定義,而其他函數(shù)都未定義。比較類函數(shù)將其變量視為unsigned char類型的數(shù)組。
1.strcpy
#include string.h
char *strcpy(char *str1, const char *str2);
把字符串str2(包括'\0')拷貝到字符串str1當中,并返回str1。
2. strncpy
#include string.h
char *strncpy(char *str1, const char *str2, size_t count);
把字符串str2中最多count個字符拷貝到字符串str1中,并返回str1。如果str2中少于count個字符,那么就用'\0'來填充,直到滿足count個字符為止。
3.strcat
#include string.h
char *strcat(char *str1, const char *str2);
把str2(包括'\0')拷貝到str1的尾部(連接),并返回str1。其中終止原str1的'\0'被str2的第一個字符覆蓋。
4.strncat
#include string.h
char *strncat(char *str1, const char *str2, size_t count);
把str2中最多count個字符連接到str1的尾部,并以'\0'終止str1,返回str1。其中終止原str1的'\0'被str2的第一個字符覆蓋。
注意,最大拷貝字符數(shù)是count+1。
5.strcmp
#include string.h
int strcmp(const char *str1, const char *str2);
按字典順序比較兩個字符串,返回整數(shù)值的意義如下:
小于0,str1小于str2;
等于0,str1等于str2;
大于0,str1大于str2;
6 strncmp
#include string.h
int strncmp(const char *str1, const char *str2, size_t count);
同strcmp,除了最多比較count個字符。根據(jù)比較結(jié)果返回的整數(shù)值如下:
小于0,str1小于str2;
等于0,str1等于str2;
大于0,str1大于str2;
7 strchr
#include string.h
char *strchr(const char *str, int ch);
返回指向字符串str中字符ch第一次出現(xiàn)的位置的指針,如果str中不包含ch,則返回NULL。
8 strrchr
#include string.h
char *strrchr(const char *str, int ch);
返回指向字符串str中字符ch最后一次出現(xiàn)的位置的指針,如果str中不包含ch,則返回NULL。
9 strspn
#include string.h
size_t strspn(const char *str1, const char *str2);
返回字符串str1中由字符串str2中字符構(gòu)成的第一個子串的長度。
10 strcspn
#include string.h
size_t strcspn(const char *str1, const char *str2);
返回字符串str1中由不在字符串str2中字符構(gòu)成的第一個子串的長度。
11 strpbrk
#include string.h
char *strpbrk(const char *str1, const char *str2);
返回指向字符串str2中的任意字符第一次出現(xiàn)在字符串str1中的位置的指針;如果str1中沒有與str2相同的字符,那么返回NULL。
12 strstr
#include string.h
char *strstr(const char *str1, const char *str2);
返回指向字符串str2第一次出現(xiàn)在字符串str1中的位置的指針;如果str1中不包含str2,則返回NULL。
13 strlen
#include string.h
size_t strlen(const char *str);
返回字符串str的長度,'\0'不算在內(nèi)。
14 strerror
#include string.h
char *strerror(int errnum);
返回指向與錯誤序號errnum對應的錯誤信息字符串的指針(錯誤信息的具體內(nèi)容依賴于實現(xiàn))。
15 strtok
#include string.h
char *strtok(char *str1, const char *str2);
在str1中搜索由str2中的分界符界定的單詞。
對strtok()的一系列調(diào)用將把字符串str1分成許多單詞,這些單詞以str2中的字符為分界符。第一次調(diào)用時str1非空,它搜索str1,找出由非str2中的字符組成的第一個單詞,將str1中的下一個字符替換為'\0',并返回指向單詞的指針。
隨后的每次strtok()調(diào)用(參數(shù)str1用NULL代替),均從前一次結(jié)束的位置之后開始,返回下一個由非str2中的字符組成的單詞。當str1中沒有這樣的單詞時返回NULL。每次調(diào)用時字符串str2可以不同。
如:
char *p;
p = strtok("The summer soldier,the sunshine patriot", " ");
printf("%s", p);
do {
p = strtok("\0", ", "); /* 此處str2是逗號和空格 */
if (p)
printf("|%s", p)
} while (p);
顯示結(jié)果是:The | summer | soldier | the | sunshine | patriot