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言語の配列に読み込むことができます!!