字符串不能這樣賦值
專注于為中小企業(yè)提供網(wǎng)站設(shè)計(jì)制作、網(wǎng)站設(shè)計(jì)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)荔波免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了上1000家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
*str其實(shí)和str[0]是等效的
另外str是數(shù)組,所以這個(gè)指針是常量,所以也不能使用類似str="asdf";的方式進(jìn)行賦值。
你可以用string.h中的strcpy()函數(shù),該函數(shù)會(huì)自動(dòng)添加\0
#includestdio.h
main()
{
char str[40];
strcpy(str,"aldkjflakdsjfalkfj");
puts(str);
}
//
string[500]="abcdefg";
//是將字符串"abcdef"賦值給字符數(shù)組中string[500]這個(gè)元素,先不說(shuō)string[500]已經(jīng)越界了.
單單是string[500]只能存放一個(gè)字符,但你這里卻要將一串字符串賦值給他.當(dāng)然會(huì)錯(cuò)誤.
像你說(shuō)的在定義時(shí)初始化是對(duì)的.
如果定義后要進(jìn)行賦值.就用string.h中的strcpy()函數(shù),將"abcdefg"復(fù)制到字符串string中.
代碼如下:
#include
stdio.h
#include
string.h
int
main()
{
char
string[500];
//
string[500]="abcdefg";
strcpy(string,"abcdefg");
//將字符串常量賦值給字符數(shù)組
return
0;
}
需要準(zhǔn)備的材料分別有:電腦、C語(yǔ)言編譯器。
1、首先,打開C語(yǔ)言編譯器,新建一個(gè)初始.cpp文件,例如:test.cpp。
2、在test.cpp文件中,輸入C語(yǔ)言代碼:char a[20];strcpy(a, "hello");printf("%s", a);。
3、編譯器運(yùn)行test.cpp文件,此時(shí)成功將字符串賦值給了字符串a(chǎn)并打印。
在C語(yǔ)言中,字符串是以字符數(shù)組形式存儲(chǔ)的,并約定以\0作為結(jié)束符。所以字符串賦值不能直接用=賦值,而是要用專門的函數(shù)進(jìn)行復(fù)制,在C語(yǔ)言中,這個(gè)函數(shù)為strcpy。
1
函數(shù)名
:
strcpy
2
形式:
char
*
strcpy(char
*dst,
const
char
*src);
3
頭文件:
string.h
4
功能:
將src中的字符串復(fù)制到dst中,并返回dst的首地址。
5
示例:
char
buf[100],
buf1[100];
strcpy(buf,
"test");//
將字符串test賦值到buf。
strcpy(buf1,
buf);
//將字符串buf的值,賦值給buf1.