advertisement

C-langage

60 %
40 %
advertisement
Information about C-langage
Technology

Published on April 25, 2012

Author: himaratsu

Source: slideshare.net

advertisement

C-LANG

コンパイル⽅方法1.  cc  chap1_̲1.c   →  a.out  が⽣生成される2.  cc  chap1_̲1.c  -‐‑‒o  chap1_̲1 →  chap1_̲1  が⽣生成される

主なエラーメッセージ1.  syntax  error -‐‑‒  スペルミスなどの⽂文法エラー2.  undeclared -‐‑‒  宣⾔言されていない変数エラー3.  parse  error -‐‑‒  {}抜けなどの構⽂文エラー

intのあれこれ・8進数⼊入れる場合は  x  =  0666・16進数⼊入れる場合は  x  =  0x6F15

インクリメントの順番・x++ 式を評価してから,  xに1を⾜足す・++x xに1を⾜足してから,  式を評価

ビット演算⼦子&  :  論論理理積   |  :  論論理理和^  :  排他的論論理理和~∼  :  ビットを反転させる<<  :  指定した数だけ左へシフト  (0埋め)>>  :  指定した数だけ右へシフト  (機種依存)

条件式・条件式  ?  式1  :  式2 成⽴立立→式1 不不成⽴立立→式2

配列列 int  x[30]; int  x[30]  =  {10,  20,  30,  328}; int  x[]  =  {10,  20,  30,  328}; int  x[]; ←Error!

⽂文字列列 char  name[20]; name[0]=ʼ’Sʼ’;  name[1]=”u”;  name[2]=..... char  name[20]  =  {ʻ‘Sʼ’,  ʻ‘uʼ’,  ʻ‘zʼ’,  ʻ‘uʼ’,  ʻ‘kʼ’,  ʻ‘iʼ’,  ʻ‘¥0ʼ’}; printf(“%s¥n”,  name); char  name[20]  =  “Suzuki”;  でも上と同様の効果 ⽂文字はシングルクォーテーション! ⽂文字列列はダブルクォーテーション!

⽂文字列列 scanf(“%d”,  x); scanf(“%s”,  str[0]); ⽂文字列列をscanfする場合、 先頭を指定すればOK.

2次元配列列 int  data[3][5]  ={  {3,4,8,6,4},  {6,4,2,2,0},  ...}; ⾏行行    列列 5列列 3⾏行行

ポインタの役割 ①  配列列に添字を使わずアクセス!(古来) ②  ⽂文字列列を扱う! ③  関数の引⽤用として⽤用いる!

ポインタの使い⽅方int  *pa;pa  =  &a; a  のアドレスを⼊入れるprintf(“%p¥n”,  pa); a  のアドレスを表⽰示printf(“%d¥n”,  *pa); a  の値を表⽰示*pa  +=  10; a  に10を⾜足す

ファイルの⼊入出⼒力力  -‐‑‒  ファイルポインタ編 r    読み出し w    書き込み FILE  *fp; a    追加 r+  読み書き(新規作成なし) w+  読み書き(新規作成あり) fp  =  fopen(“file.txt”,  “r”); a+  読み書き(新規作成あり) if(  (fp  =  fopen(“file.txt”,  “r”))  ==  NULL  ){ /*  エラー処理理  */ }

ファイルの⼊入出⼒力力  -‐‑‒  ⼊入⼒力力関数編 while(  (c=getc(fp))  !=  EOF  ) printf(“%c”,  c); while(  fscanf(fp,  “%s%d”,  city,  value)  !=  EOF  ) printf(“%s  -‐‑‒>  %d¥n”,  city,  value); 書式⽂文字の利利⽤用が可能!

ファイルの⼊入出⼒力力  -‐‑‒  出⼒力力関数編 for(i=0;  name[i]  !=  (c=getc(fp))  !=  EOF  ) printf(“%c”,  c); fprintf(fp,  “%s%d”,  city,  value); 書式⽂文字の利利⽤用が可能!

⾼高度度なポインタ 1.  ⽂文字列列の配列列を持つ char  *配列列名[]  =  {“⽂文字列列1”,  “⽂文字列列2”,  ...  };

⾼高度度なポインタ 2.  ポインタのポインタ char  *p,  **dp; p  =&c; dp  =  &p; printf(“%p¥n”,  *dp); 変数C  のアドレスが表⽰示 printf(“%d¥n”,  **dp); 変数C  の中⾝身が表⽰示

コマンドライン引数 int  main(int  argc,  char  *argv[]){ ..... ..... ..... return  0; }

モジュール化プログラミング -‐‑‒  make  コマンド -‐‑‒  関数プロトタイプ宣⾔言 -‐‑‒  ヘッダファイル(.h) -‐‑‒  読み込む時は  #include  “header.h” -‐‑‒  extern  int  x;  //  外部変数 環境変数で指定されてる場合は、 #include  <stdio.h>

メモリの管理理 Score  *p,  *top; if(  (p  =  (Score  *)malloc(sizeof(Score)  *  size)) ==NULL){ /*  領領域確保エラー  */ } top  =  p;  //先頭を覚えておいて… /*  pをほげほげ  */ free(top);  //開放!

⽂文字列列の配列列 -‐‑‒定義   char  *str[]  =  {“Hello”,  “Good-‐‑‒bye”,  “OK”}; -‐‑‒表⽰示    printf(“%s¥n”,  str[0]);  printf(“%s¥n”,  str[1]);  printf(“%s¥n”,  str[0]);

システムコール カーネルの昨⽇日にアクセスする関数  (代表例例) SIGINT  :  端末からのインタラプト⽂文字 SIGALRM  :  alarmシステムコール SIGSEGV  :  不不正なメモリアクセス signal(SIGINT,  func);インタラプト⽂文字 func()  を呼び出しが⼊入⼒力力されたら

fork() 実⾏行行中のプロセスを複製する 親 pid  =  fork(); fork() if(  pid  !=  0){ //  親プロセス }  else  {    //  ⼦子プロセス ⼦子 }

wait()とexit() ⼦子の終了了を待つ wait() pid  =  fork(); 親 if(  pid  !=  0){ //  親プロセス exit() wait(&status);  //  ⼦子の終了了を待つ }  else  { ⼦子    //  ⼦子プロセス exit(status);  //  終了了を明⽰示 }

exec(),  execvp() 他プログラムを実⾏行行 親 char  *argv[]  =  {“ls”,  “-‐‑‒a”,  NULL}; execvp(“ls”,  argv); execvp() コマンドのパス コマンドライン 引数を渡す 親

プロセス間通信 -‐‑‒  パイプ -‐‑‒  FIFO特殊ファイル -‐‑‒  ソケット

プロセス間通信  -‐‑‒  パイプ -‐‑‒  fd[0]  :  読み取り専⽤用 -‐‑‒  fd[1]  :  書き込み専⽤用 -‐‑‒  pipe(fd) fd[0] fd[0] 親 パイプ ⼦子 fd[0] fd[1]

親 パ ⼦子プロセス間通信  -‐‑‒  パイプ if(  pipe(fd)==  -‐‑‒1){ perror(“pipe”); } if(  (len=write(fd[1],  buf,  strlen(buf)+1))==NULL){ perror(“write”); } if(  (len=read(fd[0],  buf,  strlen(buf)))==NULL){ perror(“read”); }

プロセス間通信  -‐‑‒  FIFO特殊 -‐‑‒  任意のプロセス間で通信可能 -‐‑‒  mknode(),  mkfifo() -‐‑‒  扱いはファイル操作と同じ 親 FIFO 親

親 FIFO 親 プロセス間通信  -‐‑‒  パイプ if(  mkfifo(“myFifo”,  0666)  ==  -‐‑‒1){make perror(“mkfifo”); } if(  (fd=open(“myfifo”,  O_̲WRONLY))  ==  -‐‑‒1){open perror(“open”); } if(  write(fd,  buf,  sizeof(buf)))==-‐‑‒1){write! perror(“write”); }

親 FIFO 親 プロセス間通信  -‐‑‒  パイプ if(  (fd=open(“myfifo”,  O_̲RDONLY))  ==  -‐‑‒1){open perror(“open”); } if(  ret=  read(fd,  buf,  sizeof(buf)))==-‐‑‒1){read! perror(“write”); }

プロセス間通信  -‐‑‒  ソケット -‐‑‒  ネットワーク上でやり取り可能 -‐‑‒  コードなし ソケット ソケット ネット 親 ワーク 親

Add a comment

Related presentations

Presentación que realice en el Evento Nacional de Gobierno Abierto, realizado los ...

In this presentation we will describe our experience developing with a highly dyna...

Presentation to the LITA Forum 7th November 2014 Albuquerque, NM

Un recorrido por los cambios que nos generará el wearabletech en el futuro

Um paralelo entre as novidades & mercado em Wearable Computing e Tecnologias Assis...

Microsoft finally joins the smartwatch and fitness tracker game by introducing the...

Related pages

C (programming language) - Wikipedia, the free encyclopedia

In 1978, Brian Kernighan and Dennis Ritchie published the first edition of The C Programming Language. This book, known to C programmers as "K&R", served ...
Read more

The C programming language • /r/c_language - reddit

reddit: the front page of the internet ... use the following search parameters to narrow your results: subreddit:subreddit
Read more

C Language - Overview - TutorialsPoint

C Language Overview - Learn ANSI, GNU and K/R standard of C programming language with simple and easy examples covering basic C, language basics, literals ...
Read more

c language - CNET Download

C-Sprache freies Download - C Scripting Sprache (CSL), programmierend in C 7 an den Tagen, Programming C und viel mehr Programme
Read more

C Language: memcpy function (Copy Memory Block)

C Language: memcpy function (Copy Memory Block) In the C Programming Language, the memcpy function copies n characters from the object pointed to by s2 ...
Read more

C language - cppreference.com

C language. ASCII chart. Basic concepts: translation phases. comment. identifier. scope. lifetime. name space. type. arithmetic types. object. main ...
Read more

What is C language - C Programming language tutorial ...

C language - Learn C programming language covering basics C, C program examples for beginners, data types, functions
Read more

C Language Tutorial - 國立臺灣師範大學

C Language Tutorial Version 0.042 March, 1999 Original MS-DOS tutorial by Gordon Dodrill, Coronado Enterprises. Moved to Applix by Tim Ward Typed by Karen Ward
Read more

C Tutorial - Department of Physics | CoAS | Drexel University

This section contains a brief introduction to the C language. It is intended as a tutorial on the language, and aims at getting a reader new to C started ...
Read more

C/C++

Character Set In C-Language. C-Language. BCPL | Basic Code Programming Language. Memory Management in Computer System. Aug. 1. Control Statements in C ...
Read more