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

c語言返回字元

發布時間: 2022-12-28 09:32:16

c語言如何接收返回字元串

C語言不能返回字元串,你只能給函數一個字元數組的參數,用參數來返回

void foo(char *str,int n)
{
str[0] = 'a';
str[1] = 'b';
str[2] = 'c';
}

int main()
{
char c[255] = {'\0'};
foo(c,255);
printf("%s\n",c);
}

函數參數里的n是用於判斷這個字元串長度,以防越界操作

Ⅱ C語言中函數如何返回字元串

C語言中實現函數返回字元串,首先要確定函數返回的字元串地址的來源,一般分為四種方式:

  1. 函數形參帶進來的地址

  2. 靜態局部變數地址

  3. 局部變數地址,必須在函數中用malloc()函數進行地址分配

  4. 採用全局變數地址

參考代碼:

void func1( char *s ) //通過形參返回字元串

{

strcpy( s, "hello");

}

char * func1_1( char *s ) //另一種寫法

{

strcpy( s, "hello");

return s ; //返回形參地址,方便程序調用

}

char * func2( void )

{

static char s[100]; //不能是非靜態變數,否則,子函數結束,局部變數被釋放,調用者得到一個無效的地址值。

strcpy( s, "hello");

return s ; //返回靜態局部變數地址,由調用者採用相應的指針變數接收返回值,得到字元串數據。

}

char * func3( void )

{

char *s ;

s=(char *)malloc( 100 );

strcpy( s, "hello");

return s ; //返回s值,該地址需要調用者去free()釋放。

}

//定義全局變數

char globle_buf[100];

void func4( void )

{

strcpy( globle_buf, "hello");

}

char * func4_1( char *s ) //另一種寫法

{

strcpy( globle_buf, "hello");

return globle_buf ; //返回全局變數地址,方便程序調用

}

Ⅲ c語言怎麼返回字元串數組

1、在void
strcat()的strcat前添加*,表示返回char
指針。
2、strcat()應該返回str1,即
return
str1。str1是連接的結果,調用者有責任確保str1數組空間足夠大,以便在其尾部添加str2後,不會覆蓋其他數據空間。

Ⅳ c語言函數返回字元串

在time1()函數里,char now[]是個在函數里聲明的臨時變數
函數返回 char * p之後 ,char now[]的空間就已經釋放掉了
如果你想返回時間字元串
把char now[80]; 改成 char *now =(char *)malloc(sizeof(char)*80);
用malloc函數申請空間,函數返回之後空間就不會被釋放掉了
VC++ 6.0編譯通過

Ⅳ 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; // 函數外面通過,指針想訪問?、非法!!!人都不在了,你喊他幹嘛啊??
}

Ⅵ c語言如何接收返回字元串

C語言不能返回字元串,你只能給函數一個字元數組的參數,用參數來返回
void
foo(char
*str,int
n)
{
str[0]
=
'a';
str[1]
=
'b';
str[2]
=
'c';
}
int
main()
{
char
c[255]
=
{'\0'};
foo(c,255);
printf("%s\n",c);
}
函數參數里的n是用於判斷這個字元串長度,以防越界操作

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

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

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

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

比如

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

Ⅷ C語言中函數如何返回字元串

別聽 樓上 的 瞎說, 也 別 網路 了, 都是 錯 的, 我 告訴 你 正確 答案

函數 中 的 字元 串 在 函數 結束 的 時候 會 自動 被 釋放 掉, 所以 即使 返回 char* 指向 的
也 就是 原 函數 字元串 的 地址, 訪問 的 是 一個 系統 沒有 分配 給 程序 的 內存, 雖然 編譯器 不會 報錯, 但 語法 絕對 是 錯誤 的,而且 你 不一定 能 得到 一個 正確 的 結果
三種 解決 方法:
1, struct ret { char a[100]; }; 返回 一個 結構, 結構裡面 包含 字元串
2, char* ret = (char *)malloc(100 * sizeof (char)); 在 函數 里 開 一個 動態 的 字元串, 這個 可以 返回, 不過 動態 內存 需要 手動 free 掉
3, 這個 不是 c語言 了, 調用 c++ 裡面 的 string 類型, 也是 最簡單 的 辦法, 省心, 安全

Ⅸ C語言系列之C語言如何返回字元串數組

C語言實現返回一個字元串數組,是沒有這種功能的,但是可以用指向數組的指針來實現:

解釋:

char **p 這個p就是指向數組的指針,它指向一個數組的起始地址.
想要引用裡面的數組時,直接使用p[i] 即可。

我們知道C語言裡面的各種數組,本質上都是指針,並且函數其實也是不能把數組當作參數的,實際上都是把數組的地址傳進去了,實際上就是指向數組地址的指針。

實現

這樣返回的P就是指向數組的指針了,實際上就是一個字元串數組

函數解釋:

函數返回一個字元串數組,實際上就是指向數組的指針,傳進去的是返回的數組的大小以及一個字元串數組,用來處理數據用。

Ⅹ c語言怎麼返回字元串數組

C語言返回值不支持返回數組,不過可以通過返回指針類型,用以替代數組。在C語言中,數組大多數時候是可以用指針替代的。

不過需要注意的是,不能夠返回在函數內部定義的局部變數數組,因為一旦函數退出,局部變數就會被釋放,導致數組指針無效。
可以返回以下幾種:
1 全局變數,或者全局變數空間內的一個地址。
2 靜態局部變數,或者靜態局部變數內部的一個地址。
3 從參數傳入的數組/指針變數,或者在其上做的合法偏移。
4 在數組內部動態申請的空間首地址。

熱點內容
unix網路編程第2卷 發布:2025-07-04 18:33:41 瀏覽:779
編譯歷史 發布:2025-07-04 18:23:01 瀏覽:851
空調壓縮機種類 發布:2025-07-04 18:13:58 瀏覽:242
中國有ip6伺服器嗎 發布:2025-07-04 17:58:56 瀏覽:725
第六章編譯原理答案 發布:2025-07-04 17:37:55 瀏覽:40
php內存優化 發布:2025-07-04 17:25:54 瀏覽:664
威綸觸摸屏如何設置時間限制密碼 發布:2025-07-04 17:25:50 瀏覽:418
python列表的遍歷 發布:2025-07-04 17:24:20 瀏覽:24
編譯基本塊 發布:2025-07-04 17:23:06 瀏覽:750
scl語言編程 發布:2025-07-04 17:23:05 瀏覽:993