⑴ 關於c語言字元串賦值的問題
字元串 要用 char 數組存放,所以先要聲明 一個 char 數組。
由於字元串要帶一個字元串結束符,所以存放"123", 數組大小至少要用4。
char s[4];
或 多開幾個單元: char s[10];
字元串賦值 有多種方法。最常用的是調用函數 strcpy():
char s[10];
strcpy(s,"123"); 就可以了,它自動帶字元串結束符。
這時, printf("%s",s); 就可以看到屏幕上顯示 123。
=============
一個字,一個字地 賦值也可以:
char s[4];
s[0]='1'; s[1]='2'; s[2]='3'; s[3]='\0';
數組下標從0開始,所以用到 s[0],s[1],...
單引號括起的叫字元常量,一個字,一個字地 賦值 要用字元常量
'\0' 是轉義字元,是 字元串結束符
這時, printf("%s",s); 就可以看到屏幕上顯示 123。
==============
變數聲明時可以帶「初始化」,這樣賦初值很方便:
char s[4]="123";
當然 char s[10]="123"; 也可以。
char s[]="123"; 也可以。
方括弧里沒填大小,程序會自動計算大小,大小等於 sizeof("123"), 也就是4。
這時, printf("%s",s); 就可以看到屏幕上顯示 123。
⑵ c語言 字元串之間如何賦值
全是錯誤的——
cahr a[100],b[100];//這樣才能承載字元串,char a,b;這樣a、b只能存入一個字元
scanf("%s",a);//寫scanf("%s",&a);也可以
strcpy(b,a);//只能這樣調用庫函數拷貝,因為C沒有字元串變數,也就沒有字元串操作運算符。
⑶ C語言空字元串的問題;
你那越界了。
在定義的時候,char str[100]; 是指定了數組大小100個字元。
但是如果寫,char str[]="";就是是將數組的大小和值定義成和字元串常量「」相同,而這里「」是空字元串。str就一個字元大小,裡面存放的是結束符號0,所以後面你輸入字元串給str,裡面存放了第一個字元,而其他字元都存到越界的地址中。
想要定義不定長的數組。
只要使用malloc函數申請就可以了。
定義指針char *str=(char *)malloc(sizeof(char)*n);這里n就是你要的字元長度。
記得在第一次使用時判斷一下str是否為NULL(NULL說明異常,應該終止程序)。
⑷ c語言如何給已經定義了的空字元串賦值
可以使用memset函數將字元串數組中所有元素全部設置為\0即可。
函數原型:void
*memset(void
*s,
int
ch,
size_t
n);
函數說明:將s中前n個位元組
(typedef
unsigned
int
size_t
)用
ch
替換並返回
s
。
示例:
#include
<stdio.h>
#include
<string.h>
int
main()
{
char
buf[256]
=
"hello
world";
//buf字元數組初始化
printf("%d\n",
strlen(buf));
memset(buf,
0x00,
sizeof
(char)
*
256);
//全部設置為0x00即\0字元
printf("%d\n",
strlen(buf));
return
0;
}
⑸ c語言中 字元串賦值給數組的三種表達方式是什麼
1樓的答案是錯誤的,建議回答別人問題還是要看看書的!
第一種方式:定義的時候進行初始化
char
str[200]={"abcd"};//這里去掉大括弧也行
第二種方式:對數組各元素單獨賦值
char
str[200];
str[200]={'a','b','c','d'};
/*編譯系統會在最後加上'\0'的,然後就是不能使用str[200]="abcd"的方式對字元數組進行整體賦值*/
第三種方式:應該是使用指針吧
char
*str="abcd";
或者
char
*str;
str="abcd";
使用指針時,這兩種方式都是可以的,而且你可以使用下標的方式引用字元串中的各字元
⑹ c語言字元串賦值
//
string[500]="abcdefg";
//是將字元串"abcdef"賦值給字元數組中string[500]這個
元素
,先不說string[500]已經越界了.
單單是string[500]只能存放一個
字元
,但你這里卻要將一串字元串賦值給他.當然會
錯誤
.像你說的在
定義
時
初始化
是對的.如果定義後要進行賦值.就用string.h中的strcpy()函數,將"abcdefg"復制到字元串string中.
代碼
如下:
#include
<stdio.h>
#include
<string.h>
int
main()
{
char
string[500];
//
string[500]="abcdefg";
strcpy(string,"abcdefg");
//將
字元串常量
賦值給字元數組return
0;
}
⑺ C語言中怎麼字元串賦值
需要准備的材料分別有:電腦、C語言編譯器。
1、首先,打開C語言編譯器,新建一個初始.cpp文件,例如:test.cpp。
⑻ C語言 怎麼把字元數組中的字元賦值給字元變數
第一種寫法,等同於char a[10] = {"abc"};
第一種寫法,用一個字元串賦值,實際上保存了4個位元組(包含字元串結束符)。
第二種寫法,只賦值了三個位元組。
1、char c[5];
c[0]=』H』; c[1]=』e』; c[2]=』l』; c[3]=』l』; c[4]=』o』;
2、charc[5]={『H』,』e』,』l』,』l』,』o』};
3、(1)如果在定義字元數組時不進行初始化,則數組中各元素的值是不可預測的;
(2)如果花括弧中提供的初值個數(即字元個數)大於數組長度,則按語法錯誤處理;
(3)如果花括弧中提供的初值個數(即字元個數)小於數組長度,則只將這些字元賦給數組中前面那些元素,其餘的元素自動定為空字元(即『\0』);
4、(如何將字元串賦值給字元數組)
C語言中,將字元串作為字元數組來處理的。C語言規定了一個「字元串結束標志」,以字元』\0』作為標志。為此,再對字元數組初始化的方法補充一種用字元串常量來使字元數組初始化方法:
char c[] = {「Hello」};
或 char c[] =「Hello」; 注意:數組c的長度不是5,而是6.
上面的初始化等價於:char c[5]={『H』,』e』,』l』,』l』,』o』,』\0』};
而不等價於:charc[5]={『H』,』e』,』l』,』l』,』o』};
5、字元數組的輸出
char c[] ={「Hello」};
printf(「%s」,c);
6、(如何將字元串賦值給字元數組)
strcpy(字元數組1,字元串2)
eg: char str1[10]=』』, str2={「Hello」};
strcpy(str1,str2);
執行後str1狀態為:
H
e
l
l
o
\0
\0
\0
\0
\0
(1)「字元數組1」必須寫成數組名形式(如str1),「字元串2」可以是數組名,也可以是字元串常量。eg strcpy(str1, 「Hello」);
(2)不能用賦值語句將一個字元串常量或字元數組直接給一個字元數組。如下面兩句都是不合法的:str1=」Hello」;
str1=str2;
而只能用strcpy函數將一個字元串復制到另一個字元數組中去,賦值語句只能將一個字元賦給一個字元型變數或者字元數組元素。如下面的語句是合法的:
char c[5],c1,c2;
c1=』A』;c2=』B』;
c[0]=』H』; c[1]=』e』; c[2]=』l』; c[3]=』l』; c[4]=』o』;
7、strlen函數是測試字元串實際長度(不包含『\0』在內)的函數。
char c[10]=」Hello」』
printf(「%d」,strlen(c)); 或者Printf(「%d」,「Hello」); 輸出為5
⑼ c語言中,怎麼把帶空格的字元串賦值給一個數組
方法如下:
1、定義的時候直接用字元串賦值
char a[10]="hello";
注意:不能先定義再給它賦值,如char a[10]; a[10]="hello";這樣是錯誤的!
2、對數組中字元逐個賦值
char a[10]={'h','e','l','l','o'};
3、利用strcpy
char a[10]; strcpy(a, "hello");
易錯情況:
1、char a[10]; a[10]="hello";//一個字元怎麼能容納一個字元串?
況且a[10]也是不存在的。
2、char a[10]; a="hello";//這種情況容易出現,a雖然是指針,但是它已經指向在堆棧中分配的10個字元空間,現在這個情況a又指向數據區中的hello常量,這里的指針a出現混亂,不允許。
C語言的運算符根本無法操作字元串。
在C語言中把字元串當作數組來處理,因此,對字元串的限制方式和對數組的一樣,特別是,它們都不能用C語言的運算符進行復制和比較操作。
直接嘗試對字元串進行復制或比較操作會失敗。
例如,假定str1和str2有如下聲明:
char str1[10], str2[10];
利用=運算符來把字元串復制到字元數組中是不可能的:
str1 = "abc"; /*** WRONG ***/
str2 = str1; /*** WRONG ***/
C語言把這些語句解釋為一個指針與另一個指針之間的(非法的)賦值運算。但是,使用=初始化字元數組是合法的:
char str1[10] = "abc";
這是因為在聲明中,=不是賦值運算符。
試圖使用關系運算符或判等運算符來比較字元串是合法的,但不會產生預期的結果:
if (str1==str2) ... /*** WRONG ***/
這條語句把str1和str2作為指針來進行比較,而不是比較兩個數組的內容。因為str1和str2有不同的地址,所以表達式str1 == str2的值一定為0。