當前位置:首頁 » 編程語言 » c語言返回字元串函數

c語言返回字元串函數

發布時間: 2022-08-25 13:14:46

1. 在c語言中,返回一個字元串的函數應該怎樣定義

要返回字元串 需要返回char*類型

需要注意的是 返回的字元串 不能是該函數的局部變數,否則會導致出錯

可以是參數字元串,全局變數,靜態局部變數,或者動態分配的內存

比如

char*my_str_cpy(char*d,char*s)
{
char*p=d;
while(*p++=*s++);
returnd;//返回參數字元串。
}

2. c語言中return可以是一個字元串嗎

當然可以
char* fun()
{
char* myname = "hello world";
return myname;
},函數的返回值類型可以有很多種!(int,float,bool,char*,char...)

3. C語言如何返回字元串

new 是動態分配(在堆上分配),你向系統要了 50 B 的內存,如
char* str=new char[50]; // 50 * 1B
堆上分配就是這情況,你不釋放(delete一下),它就認為你在用著;不會再給別人用
如果給你的你不用了,或是你把它給忘記了,那就算是內存泄露了、

當然,你程序退出的時候,系統會替你回收、不過這樣的習慣不好,你想,如果你寫了死循環(操作系統、伺服器程序等)、那裡面不斷滴在內存泄露,你就危險了、後來發現,不知不覺,內存怎麼就不夠用了,明明自己用的不多啊、、

修改一下:
char* fanhui()
{
static char str[100]; // 局部變數,靜態局部變數,它在第一次調用的時候分配,
cin >> str; // 函數返回了,str的空間還是存在的,也就是不會重復申請、
return str; // 而且,函數外面通過,指針也是可以訪問他們的、、
}


char* fanhui()
{
char str[100]; // 局部變數,默認動態局部變數,它在每一次調用的時候分配,
cin >> str; // 函數返回了,str的空間也就不存在了,他是在,棧,上分配的、
return str; // 函數外面通過,指針想訪問?、非法!!!人都不在了,你喊他幹嘛啊??
}

4. C語言關於字元串的操作函數有哪些

string.h頭文件中包含的字元串函數

void*memcpy(void*dest,constvoid*src,size_tn);//將n位元組長的內容從一個內存地址復制到另一個地址;如果兩個地址存在重疊,則最終行為未定義
void*memmove(void*dest,constvoid*src,size_tn);//將n位元組長的內容從一個內存地址復制到另一個地址;與memcpy不同的是它可以正確作用於兩個存在重疊的地址
void*memchr(constvoid*s,charc,size_tn);//在從s開始的n個位元組內查找c第一次出現的地址並返回,若未找到則返回NULL
intmemcmp(constvoid*s1,constvoid*s2,size_tn);//對從兩個內存地址開始的n個字元進行比較
void*memset(void*,int,size_t);//用某種位元組內容覆寫一段內存空間
char*strcat(char*dest,constchar*src);//在字元串dest之後連接上src
char*strncat(char*dest,constchar*src,size_tn);//從src截取n個字元連接在字元串dest之後,返回dest字元串
char*strchr(constchar*str,intch);//從字元串str頭開始查找字元ch首次出現的位置
char*strrchr(constchar*str,intch);//從字元串str尾開始查找字元ch首次出現的位置
intstrcmp(constchar*,constchar*);//基於字典順序比較兩個字元串
intstrncmp(constchar*,constchar*,size_t);//基於字典順序比較兩個字元串,最多比較n個位元組
intstrcoll(constchar*,constchar*);//基於當前區域設置的字元順序比較兩個字元串
char*strcpy(char*str1,constchar*str2);//將str2拷貝給str1
char*strncpy(char*str1,constchar*str2,size_tn);//截取str2的n個字元拷貝給str1
char*strerror(int);//返回錯誤碼對應的解釋字元串,參見errno.h(非線程安全函數)
size_tstrlen(constchar*);//返回一個字元串的長度
size_tstrspn(constchar*s,constchar*strCharSet);//從字元串s的起始處開始,尋找第一個不出現在strCharSet中的字元,返回其位置索引值。換句話說,返回從字元串s的起始位置的完全由strCharSet中的字元構成的子串的最大長度。strspn為stringspan的縮寫。不支持多位元組字元集。
size_tstrcspn(constchar*s,constchar*strCharSet);//從字元串s的起始處開始,尋找第一個出現在strCharSet中的字元,返回其位置索引值。換句話說,返回從字元串s的起始位置的完全由不屬於strCharSet中的字元構成的子串的最大長度。strcspn為stringcomplementspan的縮寫。不支持多位元組字元集。
char*strpbrk(constchar*s,constchar*strCharSet);//在字元串s中查找strCharSet中任意字元第一次出現的位置的指針值。strpbrk為stringpointerbreak縮寫。不支持多位元組字元集。
char*strstr(constchar*haystack,constchar*needle);//在字元串haystack中查找字元串needle第一次出現的位置,heystack的長度必須長於needle
char*strtok(char*strToken,constchar*strDelimit);//將一個字元串strToken依據分界符(delimiter)分隔成一系列字元串。此函數非線程安全,且不可重入;但MSVC實現時使用了thread-localstaticvariable因而是線程安全的單仍然是不可重入,即在單線程中不能對兩個源字元串交替調用該函數來分析token,應當對一個字元串分析完成後再處理別的字元串。
size_tstrxfrm(char*dest,constchar*src,size_tn);//根據當前locale轉換一個字元串為strcmp使用的內部格式
熱點內容
linuxcompare 發布:2025-01-17 15:13:24 瀏覽:432
不能顯示隱藏的文件夾 發布:2025-01-17 15:13:24 瀏覽:529
學生作業管理系統源碼 發布:2025-01-17 14:42:31 瀏覽:171
hue編譯器 發布:2025-01-17 14:42:26 瀏覽:907
馬自達編程 發布:2025-01-17 14:21:41 瀏覽:494
android語音demo 發布:2025-01-17 14:19:25 瀏覽:702
點歌機怎麼選切換安卓系統 發布:2025-01-17 14:05:33 瀏覽:722
java壓縮與解壓縮 發布:2025-01-17 14:03:24 瀏覽:928
python代碼保護 發布:2025-01-17 14:02:22 瀏覽:326
王者榮耀電腦如何改戰區安卓 發布:2025-01-17 13:23:18 瀏覽:817