c言語でのtxtファイルの読み込み、コマンドライン引数

c言語でのtxtファイルの読み込み

 

数値計算や解析をするときに、計算速度の速いc言語を使いたいわけですが、まずc言語の配列にデータを読み込ませる必要があります。

今回はその部分を紹介します。

 

#include <stdio.h>

 

int main(int argc, char *argv)

{

    char buf[100];

    int i,j;

    char name[100][100];

    float sample[100]={};

    int data[100]={};

   

    FILE *fp;

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

        printf("ファイル読み込めません\n");

    }

    for(i=0; fgets(buf,sizeof(buf),fp)!=NULL; i++){

        fscanf(fp,"%s %f %d",name[i],&sample[i],&data[i]);

        j+=1;

    }

 

    return 0;

}

 

普段使っているプログラムから抜粋して引用してきました。

includeは置いといて、まず知らない方が「???」となるのが、

 

int main(int argc, char *argv)

の部分でしょう。

 

int main

はいいとして、

 

(int argc, char *argv[])

ですよね。

これは「コマンドライン引数」と言いまして、プログラム書き上げて実行するときに、

「./jikkou」

と実行するわけですが、コマンドライン引数を使うと、

「./jikkou file.txt」

とすることで、「file.txt」をchar型の「argv[1]」にインプットしてくれるわけです。

 

これにより、いちいちファイル名を書き換えなくても良いのがメリットですね。

 

で、実際にファイルオープンのファイル名は「argv[1]」になっていますよね。

 

    for(i=0; fgets(buf,sizeof(buf),fp)!=NULL; i++){

はファイルの一番下の行がNULL(空)になるまで1行ずつ読み込めという指示です。

        fscanf(fp,"%s %f %d",name[i],&sample[i],&data[i]);

その行ごとにfscanfでtxtの内容を読み込みます。それぞれの型に合わせて%を設定し、intとfloatは&を使って配列に読み込ませます。

 

これで、txtをc言語の配列に読み込むことができます!!