字符串函數(shù)string.h
成都創(chuàng)新互聯(lián)公司是專業(yè)的鳳臺(tái)網(wǎng)站建設(shè)公司,鳳臺(tái)接單;提供成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè),網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行鳳臺(tái)網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!
在頭文件string.h中定義了兩組字符串函數(shù)。第一組函數(shù)的名字以str開頭;第二組函數(shù)的名字以mem開頭。只有函數(shù)memmove對(duì)重疊對(duì)象間的拷貝進(jìn)行了定義,而其他函數(shù)都未定義。比較類函數(shù)將其變量視為unsigned char類型的數(shù)組。
1.strcpy
#include string.h
char *strcpy(char *str1, const char *str2);
把字符串str2(包括'\0')拷貝到字符串str1當(dāng)中,并返回str1。
2. strncpy
#include string.h
char *strncpy(char *str1, const char *str2, size_t count);
把字符串str2中最多count個(gè)字符拷貝到字符串str1中,并返回str1。如果str2中少于count個(gè)字符,那么就用'\0'來填充,直到滿足count個(gè)字符為止。
3.strcat
#include string.h
char *strcat(char *str1, const char *str2);
把str2(包括'\0')拷貝到str1的尾部(連接),并返回str1。其中終止原str1的'\0'被str2的第一個(gè)字符覆蓋。
4.strncat
#include string.h
char *strncat(char *str1, const char *str2, size_t count);
把str2中最多count個(gè)字符連接到str1的尾部,并以'\0'終止str1,返回str1。其中終止原str1的'\0'被str2的第一個(gè)字符覆蓋。
注意,最大拷貝字符數(shù)是count+1。
5.strcmp
#include string.h
int strcmp(const char *str1, const char *str2);
按字典順序比較兩個(gè)字符串,返回整數(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個(gè)字符。根據(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)成的第一個(gè)子串的長(zhǎng)度。
10 strcspn
#include string.h
size_t strcspn(const char *str1, const char *str2);
返回字符串str1中由不在字符串str2中字符構(gòu)成的第一個(gè)子串的長(zhǎng)度。
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的長(zhǎng)度,'\0'不算在內(nèi)。
14 strerror
#include string.h
char *strerror(int errnum);
返回指向與錯(cuò)誤序號(hào)errnum對(duì)應(yīng)的錯(cuò)誤信息字符串的指針(錯(cuò)誤信息的具體內(nèi)容依賴于實(shí)現(xiàn))。
15 strtok
#include string.h
char *strtok(char *str1, const char *str2);
在str1中搜索由str2中的分界符界定的單詞。
對(duì)strtok()的一系列調(diào)用將把字符串str1分成許多單詞,這些單詞以str2中的字符為分界符。第一次調(diào)用時(shí)str1非空,它搜索str1,找出由非str2中的字符組成的第一個(gè)單詞,將str1中的下一個(gè)字符替換為'\0',并返回指向單詞的指針。
隨后的每次strtok()調(diào)用(參數(shù)str1用NULL代替),均從前一次結(jié)束的位置之后開始,返回下一個(gè)由非str2中的字符組成的單詞。當(dāng)str1中沒有這樣的單詞時(shí)返回NULL。每次調(diào)用時(shí)字符串str2可以不同。
如:
char *p;
p = strtok("The summer soldier,the sunshine patriot", " ");
printf("%s", p);
do {
p = strtok("\0", ", "); /* 此處str2是逗號(hào)和空格 */
if (p)
printf("|%s", p)
} while (p);
顯示結(jié)果是:The | summer | soldier | the | sunshine | patriot
c語言不能對(duì)這個(gè)數(shù)組賦值,只能通過遍歷數(shù)組達(dá)到給數(shù)組中每個(gè)元素賦值的目的。初始化的時(shí)候可以用inta[4]={0};這樣給整個(gè)數(shù)組元素賦值為0,若想給已初始化的數(shù)組清零,也只能遍歷數(shù)組。
在C語言中,所謂的“清空”,意思是“無視里面的數(shù)據(jù)”,而不是“讓里面沒有數(shù)據(jù)”。有時(shí)候可能需要把一個(gè)數(shù)組清零,意思是全部數(shù)據(jù)都用0填充,可以用庫(kù)函數(shù)來實(shí)現(xiàn)。假設(shè)數(shù)組名為a,無論什么類型也無論幾維都一樣,可以寫成memset(a,0,sizeof(a));
擴(kuò)展資料:
在C語言中, 數(shù)組屬于構(gòu)造數(shù)據(jù)類型。一個(gè)數(shù)組可以分解為多個(gè)數(shù)組元素,這些數(shù)組元素可以是基本數(shù)據(jù)類型或是構(gòu)造類型。因此按數(shù)組元素的類型不同,數(shù)組又可分為數(shù)值數(shù)組、字符數(shù)組、指針數(shù)組、結(jié)構(gòu)數(shù)組等各種類別。
關(guān)于可變長(zhǎng)數(shù)組(VLA)的問題:原來的C89標(biāo)準(zhǔn)中是不允許可變長(zhǎng)數(shù)組出現(xiàn)的,但是在C99標(biāo)準(zhǔn)中,加入了對(duì)VLA的支持,但是支持的編譯器不多,而且由于棧溢出的安全問題,沒有太多的人敢用這個(gè)可變長(zhǎng)數(shù)組,所以在C11標(biāo)準(zhǔn)中又把它規(guī)定為可選實(shí)現(xiàn)的功能了。
參考資料來源:百度百科-數(shù)組
樓上的, 51 可以動(dòng)態(tài)分配內(nèi)存, 引用 stdlib.h 后 init_mempool() 后就可以用 malloc/free/reallc 了
至于樓主的問題反倒不知怎么回答, c 里有 clear() 庫(kù)函數(shù)?
釋放函數(shù)又是什么意思?函數(shù)編譯后都是存在于 ROM 區(qū), 就算你拿一個(gè)指針指向它也無法起到任何釋放效果
單片機(jī)不像 PC, 要從存貯器中載入到 RAM 后運(yùn)行, RAM 中運(yùn)行的程序就會(huì)出現(xiàn)像 DLL 這種東西, ROM 就是用于直接運(yùn)行的
有些像 ARM 這類的高級(jí)單片, 在硬件設(shè)計(jì)中使用了可擦寫ROM/FLASH的, 可以實(shí)現(xiàn)一部分像 PC 一樣的效果,但大多數(shù)仍然是直接運(yùn)行ROM/FLASH,完全動(dòng)態(tài)的RAM比效少見
為了避免釋放已經(jīng)釋放了內(nèi)存的指針內(nèi)存,或沒有釋放內(nèi)存,在c語言中最好是在定義指針時(shí)賦初值NULL,釋放后立即賦NULL,釋放時(shí)檢查指針值再?zèng)Q定釋放就避免釋放錯(cuò)誤了,如:
int *a = NULL
int *b = (int*) malloc(sizeof(int) * 10);
int *c = NULL, *d = NULL;
c = b;
d = a;
/* 執(zhí)行大量操作后 */
if(a != NULL) free(a);
if(b != NULL) free(b);
if(c != NULL) free(c);
if(d != NULL) free(d);
按照這樣規(guī)定,即使代碼再長(zhǎng),以及經(jīng)過多次設(shè)計(jì)指針的函數(shù)調(diào)用,依然不會(huì)造成內(nèi)存泄漏,或內(nèi)存釋放錯(cuò)誤!
一般用delete如下(舉個(gè)簡(jiǎn)單的例子):
int* pInt = new int; //分配空間
*pInt = 90; //使用這個(gè)分配的空間
cout*pIntendl;
delete pInt; //釋放空間
很簡(jiǎn)單,在打開時(shí)指定打開方式為w就可以了。
比如,fp = fopen( "a.txt", "w" );
close(fp),這樣文件就清空了。
當(dāng)然,打開方式為"a"也可以。
刪除文件用remove("a.txt")函數(shù)。
文章名稱:c語言清空指針用什么函數(shù) c語言清空指針用什么函數(shù)表示
分享URL:http://aaarwkj.com/article16/docppgg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、網(wǎng)站改版、App設(shè)計(jì)、云服務(wù)器、網(wǎng)頁設(shè)計(jì)公司、企業(yè)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)