字元陣列賦值

2021-09-29 16:04:11 字數 1227 閱讀 5759

字元陣列操作需要用的函式有,strcpy,strcmp,strlen,

strcpy 和 memcpy 區別  strcpy 函式使用方法

#if 1

/*    叫小屁孩空手去買東西    */

char *p=0;  //  無記憶體空間  記憶體位址  00000000

uint32_t *pnum=0;  //  無記憶體空間00000000

nrf_log_info("%p\r\n",(uint32_t)p);

nrf_log_info("uint32_t=%p\r\n",(uint32_t)pnum);

/*    父母已經提前付完錢了,小屁孩拿著東西就走    */

p="hello wang";  // 字元常量有空間  000295dc

nrf_log_info("%p,p=%s\r\n",(uint32_t)p,(uint32_t)p);

/*     沒有給錢,還想拿東西    */

*pnum=0x12345678;//    沒有記憶體空間,很危險

nrf_log_info("%p,p=%d\r\n",(uint32_t)pnum,(uint32_t)*pnum);

#endif

char a[10];

怎麼給這個陣列賦值呢?

1、定義的時候直接用字串賦值

char a[10]="hello";

注意:不能先定義再給它賦值,如char a[10]; a[10]="hello";這樣是錯誤的!

2、對陣列中字元逐個賦值

char a[10]=;

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出現混亂,不允許!

3、補充一點 char *a; a="hello";//這種情況是正確的。

還有:不能使用關係運算子「==」來比較兩個字串,只能用strcmp() 函式來處理。

c語言的運算子根本無法操作字串。在c語言中把字串當作陣列來處理,因此,對字串的限制方式和對陣列的一樣,特別是,它們都不能用c語言的運算子進行複製和比較操作。

C字元陣列賦值

舉例如下 char a 10 1 定義的時候直接用字串賦值 char a 10 hello 注意 不能先定義再給它賦值,如 char a 10 a 10 hello 這樣是錯誤的!2 對陣列中字元逐個賦值 char a 10 3 利用strcpy char a 10 strcpy a,hello 易...

字串字元陣列的賦值

字元陣列的定義與初始化 char str 10 如果說提供的字元的個數大於陣列的長度,就按語法錯誤處理,如果小於陣列的長度,不夠的位置用空字元補全 0 字元陣列與字串 1 c 語言中將字串當做字元陣列來處理 字串的結束標誌是 0 而前面的所有字元組成字串,不算 0 2 對於字串常量的話,系統會自動在...

如何給給字元陣列賦值

要說c語言中最讓我覺得棘手的,就是字元陣列的,c語言中沒有字串這個型別,字串只能存放在字元型陣列中。那麼,我們先來看看如何給乙個一維陣列賦值 1 定義的時候直接賦值 char arr 10 這種寫法也可以直接省略花括號,直接寫成 char arr 10 kitty 2 初始化列表,把各個字元依次賦給...