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