# Function Function is a tool that defined by users .Each function can has diffrent type , like int ,char , float ....etc . In nowadays , we use "functional programming " to write a program .We defined diffrent functions for each process instead of writing one main function to include all process . Example : ```clike= #include <stdio.h> int main(){ int a[10] = {1,2,3,4,5,6,7,8,9,10} ; printf("a[0] is %d\n" , a[0]) ; printf("a[1] is %d\n" , a[1]) ; printf("a[2] is %d\n" , a[2]) ; printf("a[3] is %d\n" , a[3]) ; printf("a[4] is %d\n" , a[4]) ; printf("a[5] is %d\n" , a[5]) ; printf("a[6] is %d\n" , a[6]) ; printf("a[7] is %d\n" , a[7]) ; printf("a[8] is %d\n" , a[8]) ; printf("a[9] is %d\n" , a[9]) ; return 0 ; } ``` ```clike= #include <stdio.h> void print_array(int * a){ printf("a[0] is %d\n" , a[0]) ; printf("a[1] is %d\n" , a[1]) ; printf("a[2] is %d\n" , a[2]) ; printf("a[3] is %d\n" , a[3]) ; printf("a[4] is %d\n" , a[4]) ; printf("a[5] is %d\n" , a[5]) ; printf("a[6] is %d\n" , a[6]) ; printf("a[7] is %d\n" , a[7]) ; printf("a[8] is %d\n" , a[8]) ; printf("a[9] is %d\n" , a[9]) ; } int main(){ int a[10] = {1,2,3,4,5,6,7,8,9,10} ; print_array(a) ; return 0 ; } ``` ## Format ```clike type function_name( arguments ){} ; ``` * **type** The type of the value that the function return * **function_name** The name defined by users , can be any ,but can have space or strange sign in function name * **arguments** The variables that we pass into the function , when we call it . Example :  ```clike= void print_array(int * a){ printf("a[0] is %d\n" , a[0]) ; printf("a[1] is %d\n" , a[1]) ; printf("a[2] is %d\n" , a[2]) ; printf("a[3] is %d\n" , a[3]) ; printf("a[4] is %d\n" , a[4]) ; printf("a[5] is %d\n" , a[5]) ; printf("a[6] is %d\n" , a[6]) ; printf("a[7] is %d\n" , a[7]) ; printf("a[8] is %d\n" , a[8]) ; printf("a[9] is %d\n" , a[9]) ; } ``` * name : `print_array` * type : `void` * arguments : `int *a` Type `void` means we don't need to return any value , and `*a` is a way to pass a array into the function . ## IO funtion IO = input / output ### printf() ```clike printf("string you want to out put %d%d%d.....\n" ,a,b,c,....) ; ``` If you have n % , you have to input n variables . % symbol can be plugged in the string. * name : `printf` * arguments : "....." , a ,b ,c ,..... [printf source code](https://code.woboq.org/userspace/glibc/stdio-common/printf.c.html) [argument](https://docs.microsoft.com/zh-tw/cpp/c-runtime-library/format-specification-syntax-printf-and-wprintf-functions?view=msvc-160) Example of `printf` `\n` is the special character that will 換行 .... Characters that with `\` begin may have special function . ```clike= #include <stdio.h> int main(void) { printf("顯示字元 %c\n", 'A'); printf("顯示字元編碼 %d\n", 'A'); printf("顯示字元編碼 %c\n", 65); printf("顯示十進位整數 %d\n", 15); printf("顯示八進位整數 %o\n", 15); printf("顯示十六進位整數 %X\n", 15); printf("顯示十六進位整數 %x\n", 15); printf("顯示科學記號 %E\n", 0.001234); printf("顯示科學記號 %e\n", 0.001234); return 0; } ``` ### scanf() * **scan `int`** ```clike int a ; scanf("%d" , &a) ; ``` * **scan `char`** ```clike char c ; scanf("%c" , &c) ; ``` * **scan string** ```clike char a[100] ; scanf("%s" , a) ; ``` Example : ```clike= #include <stdio.h> int main(int argc, char const *argv[]) { char c ; printf("Enter a character : "); scanf("%c" , &c) ; printf("the character is %c\n", c); int a ; printf("Enter a number : "); scanf("%d" , &a) ; printf("the number is %d\n", a); char s[100] ; printf("Enter a word : "); scanf("%s" , s) ; printf("the word is %s\n", s); return 0; } ``` ```clike $ gcc io.c -o io $./io ``` ```clike Enter a character : a the character is a Enter a number : 5 the number is 5 Enter a word : hi the word is hi ```