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

時間 2021-09-03 07:08:19

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語言 如何定義字串陣列

自我程式設計 getch 這句多餘,只是列印而已不需要這個函式接收字元。printf s n ch 0 printf s n ch 1 printf s n ch 2 這3句列印,第2個傳參和printf函式形參型別不一致,函式需要的是char 而你給的是char 12 執行可以,但會有警告。你想要...

c語言字串轉成byte陣列,C語言把16進位制字串轉換成位元組陣列

1 c這麼靈活,通常不用轉。char a 1024 hello world byte b byte a 這時b就等同於轉了,直接用b 123 等就可以2 強行轉需要複製,浪費一倍記憶體。include char a 1024 hello world byte b 1024 memcpy b,a,10...

c語言反轉字串怎麼反轉,C語言反轉字串怎麼反轉?

讀取字串,瀏覽字串每一個字元,如果是空格就輸出空格,否則就儲存當前位置,從當前位置移動到下一個空格或字元尾前,從當前位置開始反向輸出,直達回到儲存的位置最後輸出回車,結束 以下是c語言版的,需要的話,可以看看 include include include define string maxsize...