程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> C語言基礎知識 >> C語言字符數組和字符串

C語言字符數組和字符串

編輯:C語言基礎知識
用來存放字符的數組稱為字符數組,例如:
char a[10];  //一維字符數組
char b[5][10];  //二維字符數組
char c[20]={'c', '  ', 'p', 'r', 'o', 'g', 'r', 'a','m'};  // 給部分數組元素賦值
char d[]={'c', ' ', 'p', 'r', 'o', 'g', 'r', 'a', 'm' };  //對全體元素賦值時可以省去長度
字符數組實際上是一系列字符的集合,也就是字符串(String)。在C語言中,沒有專門的字符串變量,沒有string類型,通常就用一個字符數組來存放一個字符串。

C語言規定,可以將字符串直接賦值給字符數組,例如:
char str[30] = {"c.biancheng.net"};
char str[30] = "c.biancheng.net";  //這種形式更加簡潔,實際開發中常用
數組第0個元素為 'c',第1個元素為 '.',第2個元素為 'b',後面的元素以此類推。也可以不指定數組長度,例如:
char str[] = {"c.biancheng.net"};
char str[] = "c.biancheng.net";  //這種形式更加簡潔,實際開發中常用

在C語言中,字符串總是以'\0'作為串的結束符。上面的兩個字符串,編譯器已經在末尾自動添加了'\0'
'\0'是ASCII碼表中的第0個字符,用NUL表示,稱為空字符。該字符既不能顯示,也不是控制字符,輸出該字符不會有任何效果,它在C語言中僅作為字符串的結束標志。
puts 和 printf 在輸出字符串時會逐個掃描字符,直到遇見 '\0' 才結束輸出。請看下面的例子:
#include <stdio.h>
int main(){
    int i;
    char str1[30] = "http://c.biancheng.net";
    char str2[] = "C Language";
    char str3[30] = "You are a good\0 boy!";
    printf("str1: %s\n", str1);
    printf("str2: %s\n", str2);
    printf("str3: %s\n", str3);
    return 0;
}
運行結果:
str1: http://c.biancheng.net
str2: C Language
str3: You are a good

str1 和 str2 很好理解,編譯器會在字符串最後自動添加 '\0',並且數組足夠大,所以會輸出整個字符串。對於 str3,由於字符串中間存在 '\0',printf() 掃描到這裡就認為字符串結束了,所以不會輸出後面的內容。

需要注意的是,用字符串給字符數組賦值時由於要添加結束符 '\0',數組的長度要比字符串的長度(字符串長度不包括 '\0')大1。例如:
char str[] = "C program";
該數組在內存中的實際存放情況為:

字符串長度為 9,數組長度為 10。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved