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 ...