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