c語言怎麼返回字串陣列,C語言中怎麼查詢字串陣列中的某個字元?

時間 2021-09-03 07:07:18

1樓:風若遠去何人留

c語言返回值不支援返回陣列,不過可以通過返回指標型別,用以替代陣列。在c語言中,陣列大多數時候是可以用指標替代的。

不過需要注意的是,不能夠返回在函式內部定義的區域性變數陣列,因為一旦函式退出,區域性變數就會被釋放,導致陣列指標無效。

可以返回以下幾種:

1 全域性變數,或者全域性變數空間內的一個地址。

2 靜態區域性變數,或者靜態區域性變數內部的一個地址。

3 從引數傳入的陣列/指標變數,或者在其上做的合法偏移。

4 在陣列內部動態申請的空間首地址。

2樓:匿名使用者

1、在void strcat()的strcat前新增*,表示返回char 指標。

2、strcat()應該返回str1,即 return str1。str1是連線的結果,呼叫者有責任確保str1陣列空間足夠大,以便在其尾部新增str2後,不會覆蓋其他資料空間。

3樓:

char* strcatf(char str1,char str2) //想放回字串陣列的話,就返回首地址。

4樓:匿名使用者

char * strcatf(char str1,char str2)

加一個*號即可,返回的就是指標型別

c語言中怎麼查詢字串陣列中的某個字元?

5樓:匿名使用者

程式有誤,修改如下:

#include

#include

void main(){

char sh[20];

gets(sh);

for(int i=0;i<20;i++)if(sh[i]='@')

printf("判斷出有字元@\n");

break;

if(sh[i]='\0')printf("無字元@\n");

6樓:匿名使用者

c語言中的標準函式庫中的strchr()函式可以實現查詢字串中的某個字元。

標頭檔案: #include

函式原型:char *strchr(const char *s, int c);

函式說明:從左向右,在字串s中查詢字元c首次出現的位置,如果找到返回c在s中的位置(指標),否則返回null

例:#include

#include

void main()

char *strrchr(const char *s, int c); 從右向左,查詢s中最右邊的匹配字元位置

char *strstr(const char *s, const char *sub); //在s中查詢sub子串出現的位置

7樓:江華

不能用break吧,用break語句時,輸入的第一個字母不是@符號時,程式就跳出去了,不會再執行for迴圈語句,建議你刪除break語句或者將break語句換成continue語句試試。

8樓:匿名使用者

char sh[20];

gets(sh);//這一句只要求使用者輸入一個字元。因此,不管你輸入多少,程式只會讀到你輸入的第一個字元。

如果想輸入多個字元,得用迴圈。

9樓:匿名使用者

程式沒有找到字元的時候,你就break,退出迴圈了。把這一句去掉就可以了。

修改如下 :

#include

#include

void main()

else }}

c語言中將字串賦值給字元陣列的問題

10樓:大野瘦子

char s[20];s="helo";這樣錯誤的原因就是:不能用賦值語句將一個字串常量直接給一個字元陣列賦值。

char s[20];

char ss="hello";

s=ss;錯誤原因是:不能用賦值語句將一個字元陣列直接給一個字元陣列賦值

,即字串的複製(c語言中,但是在c++的string 類,上面的賦值是正確的)必須用strcpy()函式實現。

而char a[ ]=”toyou“;正確的原因是:因為在宣告陣列變數的時候就是,為其開闢空間,併為其初始化,這樣才是符合c語言語法的。

c語言中字串賦值的理解

一、指標式賦值

上面的示例是顯然可以正常執行的,也是很容易理解的。但是下面這種方式就令人有點難以理解了。

通過程式的運**況,我們可以知道:char *p = "hello";這種字串的賦值方式是完全沒有問題的。要理解這種賦值方式,我們首先得理解雙引號(特別注意:

這個是雙引號,不要賦值的時候給弄了個單引號)在這個語句中做了什麼工作。雙引號主要做了3個工作,分別是:

(1)申請了空間(在常量區),存放了字串。

(2)在字串尾加上了“\0”。

(3)返回地址。

這裡所返回的地址就賦值給了char *型別的指標變數p。

二、通過字元陣列直接把字串賦值。程式如下:

三、需要注意的一些問題

直接把字串賦值給陣列名(也就是陣列首元素的首地址)是不行的。

11樓:

char a ="toyou";

這才是對的,要用雙引號。

這種方式叫初始化,是可以的,"toyou"這個字串放在資料區裡,在編譯階段就確定了。

a作為陣列名,它是一個常指標,不能改變所指向的地址,只能是&a[0]所以你在非宣告的地方用a="***",就相當於改變了常量的值,是不允許的。

12樓:

#include

int main()

13樓:豬頭或火寶寶

你好!!!

舉例如下:

char s[20];s="helo";這樣是錯誤的,原因就是不能用賦值語句將一個字串常量直接給一個字元陣列賦值。

char s[20];

char ss="hello";

s=ss;這也是錯誤的,原因是不能用賦值語句將一個字元陣列直接給一個字元陣列賦值

即字串的複製(c語言中,但是在c++的string 類,上面的賦值是正確的)必須用strcpy()函式實現。

而char a[ ]=”toyou“;為上面是正確呢???那是因為我們在宣告陣列變數的時候就是,為其開闢空間,併為其初始化,這樣才是符合c語言語法的。而上面的都是不符合語法的。

C語言如何返回字串,C語言中函式如何返回字串?

1 c語言中,字串不是一種基本型別,其本質是字元陣列,因此直接返回字串是不行的。因為c語言不允許例如 char 10 fun 這樣的函式定義方式。但是可以返回字元指標。返回一個動態分配的記憶體地址。2 例如 char c char getinput int length length 為要輸入字串的...

c語言字串陣列和字元陣列有什麼區別

芒素蘭勵鳥 這個是字元陣列,沒有字串陣列這種說法的。char a abcd 就是可以用字串給字元陣列初始化 僑有福泥月 這個是字元陣列。c語言字元陣列和字串的區別,字元陣列是一個儲存字元的陣列,而字串是一個用雙括號括起來的以 0 結束的字元序列,雖然字串是儲存在字元陣列中的,但是一定要注意字串的結束...

c語言中字串連線怎麼解決,C語言中字串連線怎麼解決??

大野瘦子 include char a 10 123 char b 10 abc char c 20 strcpy c,a 把串a複製到有足夠空間的c中strcat c,b 把b連線到c的串尾需要注意的事項 c的長度一定要能夠容納要轉換的數字的長度,比如下面的例子,c的長度至少為8 1234567 ...