こんにちは。
昨日衛星はどこに落ちたのかしら?北米とか言ってるみたいだけど真相は?
衛星の軌跡を見たけど、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するように心がけましょう。
これだけでは何も面白くもないですが、
僕はデータの処理/解析などでこれらを活用してまーす。
コメントをお書きください