陣列與結構

陣列

當我們需要定義大量的變數時,就可以定義一個陣列,定義時,也可以指定起始值:

int a[20];
int b[5] = {1,2,3,4,5};

取得陣列內容,可以利用陣列索引/下標(Subscript)來取得,請注意,索引值是從0開始,所以,以b陣列而言,是沒有b[5]的內容。

通常會配合迴圈來印出陣列裡的所有內容。

注意,因為a陣列未被定義內容,內容會是不可預期的內容。,

int a[20];
int b[5] = {1,2,3,4,5};
printf("%d\\n", **b[4]**);
for (int i=0; i< 20; i++){
  printf("%d\\n", a**[i]**);
}
for (int i=0; i< 5; i++){
  printf("%d\\n", **b[i]**);
}

字串處理

在c裡,字元(char)是用單引號來表示,所以,多個字元基本上就是使用字元陣列。在c裡可以利用雙引號來表達多個字元,會預設結束字元為「\0」。

#include <stdio.h>
main(){
  char name1[] = {'b'};
  printf("%s\\n", name1);
  char name2[] = {'b', '\\0'};
  printf("%s\\n", name2);
  char name3[] = "b";
  printf("%s\\n", name3);
  char name4[5]= "I love C!!";
  printf("%s\\n", name4);
  char name5[2];
  scanf("%s", name5);
  printf("%s\\n", name5);

}

Untitled

因為scanf讀字串,如果中間有空白會自動切割為不同字串,所以,如果要讀取整行,要利用:

scanf("%[^\\n]s", name5);
#include <stdio.h>
main(){
  char name1[] = {'b'};
  printf("%s\\n", name1);
  char name2[] = {'b', '\\0'};
  printf("%s\\n", name2);
  char name3[] = "b";
  printf("%s\\n", name3);
  char name4[5]= "I love C!!";
  printf("%s\\n", name4);
  char name5[2];
  scanf("%[^\\n]s", name5);
  printf("%s\\n", name5);

}

Untitled