c言語勉強記録(4)

f:id:denshiteppe0725:20160509191927p:plain

構造体

1つのデータにまとめたい時に使用する。

・宣言

 typedef struct {

  const char *name;

  int age;

 } person;

・使い方

 person a = {"はてな", 10};

 printf("名前は%s 年齢は%i\n", a.name, a.age);

共用体

同じ"量"でも単位が違うとかいう時に使う。構造体と一緒に使うことが多い。

・宣言

 typedef union{

  short count;   ←個数

  float weight;   ←重さ

  float volume;   ←大きさ

 } quantity;

・使い方

 typedef struct{

  const char *name;

  quantity q;

 } fruit;

列挙型

・宣言

 typedef enum {RED, BLUE, GREEN} colors;

・使い方

 colors bad = RED

 

 

C言語勉強記録(3)

データ型

・小さい器に大きい値を入れてはダメ

 int x = 100000;

    short y = x;

 ※これは予期せぬことが起きる

・キャストで型を変えられる

 int x = 5;

 int y = 8;

 float z = (float)x / y;

・関数の定義はヘッダーファイルに分割できる

 ◯◯.hファイルを作成→float add_value();を記入

 #include "◯◯.h"を記入すればインクルードできる

 

C言語勉強記録(2)

f:id:denshiteppe0725:20160426230433p:plain

・標準入力と標準出力と標準エラーがあるということ

 stdin, stdout, stderr

 scanfは fscanf を呼び、printfは fprintf を呼んでいる。

・fopenで独自のストリームを用意することができる。

 FILE *fff = fopen("example.csv", "w");

 fprintf(fff, "test");

・安全性チェックとしてfopenの引数を読み取る

 fopen("example.csv","r"); はエラー時に0を返すので、if文で0が来たらエラーと判断

コマンドライン引数を渡せる

 int main(int argc, char *argv[])

 argc:配列の数(実行するプログラム+渡された引数の数) なので引数が2コあれば3

 argv[ ]:渡された引数の配列。

・オプションをつけられる

 #include<unistd.h>を読み込み、getopt()関数を記述することでコマンドラインから

 オプションを指定してプログラムを実行できる。

・所感

 進むごとに複雑になっていく。。。

 

 

 

 

C言語勉強記録(1)

f:id:denshiteppe0725:20160421224644j:plain

今日までに勉強してきたこと

gccでソースファイルをコンパイルする方法

 gcc test.c -o test

・printf( ), scanf( )の使い方

・if, while, forの使い方

・文字列は実はcharの配列

・メモリとポインタ

 引数をポインタで受け取る

 配列とポインタは似ている

・fgets( )の使い方

・string.hについて

 概要と文字列検索

今日やったこと

・標準入力、標準入出力のリダイレクト

 ./test < data.csv > output.csv  ・・・data.csvを入力してoutput.csvに出力する。