Blog - プログラミング


c言語の勉強 2回目

こんにちは。

昨日衛星はどこに落ちたのかしら?北米とか言ってるみたいだけど真相は?

衛星の軌跡を見たけど、2時間くらいで地球一周してるんだから

墜落したときの衝撃ってすごいんじゃないの?とか思っていました。

まぁ、僕の頭には落ちてこなかったのでよかったです。


さて、2回目のプログラミングのお勉強です。


***********************************************************************************************************

 

[Lesson4] ファイルを読み込んで出力してみよう

------------------ stady_file_read.c --------------------------------------------------------------

#include <stdio.h>

#include <stdlib.h>

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

        FILE *fp;

        int birthday;

        char name[256];



        if ( argc < 2 ){

                printf("(usage) : stady_file_read.exe [filename]\n");

                exit(1);

        }



        if((fp = fopen(argv[1],"r")) == NULL){

                printf("file read error!!!\n");

               exit(0);

        }



        while((fscanf(fp,"%s %d",name,&birthday)) != EOF ) {               

printf("name:%s birthday:%d\n",name,birthday);

        }



        fclose(fp);

        return 0;

}



 

 --------------------------------------------------------------------------------------------------------

【実行】

./stady_file_read.exe data

name:hiroyuki birthday:19840124

name:izumi birthday:19840628

name:ui birthday:20081028

----------------------------------------------------------------------------------------------------------

 

ファイルの読み込みにはファイルポインタを使います。

ファイルポインタは下記のように定義します。

(fpとしていますが任意の変数でOKです)

 

  FILE *fp;

 

ファイルを開くにはfopen関数を使います。

 

  fp = fopen(”ファイル名”,"r")

 

今回はファイル名をargv[1]としてコマンドの引数をファイル名としました。

もちろん、fopen(”data”,"r")と指定してもOKです。

 

fopenの2つ目のオプションは下記のように覚えておきましょうか。

読み込むファイルは"r"

書き込むファイルは"w"

 

次にfscanf関数でファイルを1行読み込みます。

 

fscanf(fp,"%s %d",name,&birthday)

 

fpで指定したファイルの1カラム目の”hiroyuki”をchar型の変数(name)、2カラム目の”19840124”をint型の変数(birthday)に代入します。

 

そして、printfでこれらの変数を出力します。

 

  printf("name:%s birthday:%d\n",name,birthday);

 

whileを使ってファイルの終わり(EOF)がくるまで処理を繰り返します。

 

fopenしたら最後には必ずfcloseするように心がけましょう。



これだけでは何も面白くもないですが、

僕はデータの処理/解析などでこれらを活用してまーす。

ダウンロード
stady_file_read.c.tar.tar.gz
GNU tar 421 Bytes
0 コメント

c言語の勉強 1回目

こんばんは。

プログラミングほぼ初心者君です。

サクサクプログラムを作れる人に憧れています。

大学で勉強したけど、ちんぷんかんぷんで理解不能でした。

そして、今になって勉強を始めようかと思いまして。

今でも基礎が理解できないけど。

 

ということで、早速基礎からお勉強です。

参考書とか見ると難しい説明が長くて良くわからないので

まずは深く考えずに実践しながら覚えて行こうとか思います。

 

ちなみに、MACBookにはDefaultではコンパイラが入っていないから

”Xcode”っていう開発ツールをインストールしてます。

 

また、あえてブログに書いたのは学んだことを忘れないようにと

個人用に記録したかったからです。

ブログを見ている人にレクチャーする目的ではありませんので悪しからず。。。

どう考えてもgoogleで調べた方が正しい事が書いていますのでw

 

***********************************************************************************************************

 

[Lesson1] とりあえず何かをを表示してみよう

------------------ stady_printf.c ------------------------------------------------------------------

#include<stdio.h>
int main(){
        int x;
        x=123;


        printf("Hello! My name is Hiroyuki.\n");

        printf("%d\n",x);
        return 0;

}

 --------------------------------------------------------------------------------------------------------

【実行】

./stady_printf.exe

Hello! My name is Hiroyuki. ←出力結果

123 ←出力結果

----------------------------------------------------------------------------------------------------------

 

でたぁ!

これは、簡単ですね。

単純に文字を出力したのと、

xという変数をint型で定義して、123という数字をxに代入、変数xを出力する。

変数xはint型で定義しているので、出力形式は整数型の”%d”にする。

最後は戻り値を0を返す。

int型は主に整数だけど、小数を扱う場合にはdouble型ってのを使います。

他にも色々あるけど、ググッてね。

 

**********************************************************************************************************

 

[Lesson2] 値を読み込んでみましょう

------------------ stady_scanf.c ------------------------------------------------------------------

#include<stdio.h>
int main(){


        int x;

 

        printf("input=");

        scanf("%d",&x);

 

        printf("\n");

        printf("output=%d\n",x);

 

        return 0;

}

-----------------------------------------------------------------------------------------------------------

【実行】

./stady_scanf.exe

input= ←キーボードで適当な整数を入力する。

     ここでは”999”と入れてみました。

output=999

-----------------------------------------------------------------------------------------------------------

 

おk!

ちなみに、”1.9”という小数値を入力すると”1”が返ってきました。

また、”ABC”と入力すると”0”が返ってきました。

入出力の型によって、変数の定義を変えなくてはいけませんね。

 

 

***********************************************************************************************************

 

[Lesson3] 足し算/引き算/掛け算/割り算

------------------ stady_calc_1.c -----------------------------------------------------------------

#include<stdio.h>
int main(){


        double x,y;

 

        printf("x=");

        scanf("%lf",&x);
        printf("y=");

        scanf("%lf",&y);


        printf("\n");

 

        printf("addition=%.2lf\n",x + y);

        printf("subtraction=%.3lf\n",x - y);

        printf("multiplication=%.4lf\n",x * y);

        printf("division=%lf\n",x / y);
        return 0;

}

----------------------------------------------------------------------------------------------------------

【実行】

./stady_calc_1.exe

x= ←入力。

y= ←入力。

     ここではxに”1”、yに”10”と入れてみました。

addition=11.00

subtraction=-9.000

multiplication=10.0000

division=0.100000

----------------------------------------------------------------------------------------------------------

 

計算の基本はこれだけです!

複雑な計算も「足し算/引き算/掛け算/割り算」の集まりですね。

割り算の余りを計算する”%”というのもあるそうですが

私は今のところ使うことはなさそうです。

今回は割り算も使ったので変数はdouble型で定義しました。

printfでの出力データの変換形式は”%lf”とすることで浮動小数点型で出力されます。

小数点第2位までの表示にするには、"%.2lf" or ”%0.2lf”とすればよいと思います。

 

**********************************************************************************************************

 

今日はここまで。

 

今回使用した関数のおさらい。

1.printf

2.scanf

 

まだ基礎のほんの一部ですね。

はぁ、基礎を身につけるまでが大変ですね。

まぁのんびりとお勉強していきますかー。

 


ダウンロード
110903_src.zip
zip ( 圧縮 ) ファイル 3.3 KB

2 コメント