Skip to content

Instantly share code, notes, and snippets.

@keita03301995
Created July 6, 2015 15:09
Show Gist options
  • Save keita03301995/f13bfe7aa9b60620becf to your computer and use it in GitHub Desktop.
Save keita03301995/f13bfe7aa9b60620becf to your computer and use it in GitHub Desktop.
#include <stdio.h>
#define NUM 100
void read(FILE *fp);
int main( int argc, char *argv[NUM] )
{
FILE *fp;
int i;
char filename[NUM];
sprintf(filename,"C:\\Users\\啓汰\\Downloads\\BC PAD\\課題12DataFile\\%s",argv[1]);
fp = fopen(filename,"r");
if ( fp == NULL )
{
printf("エラー\n");
return 1;
}
if ( argc < 2 )
{
printf("引数不足");
return 1;
}
read(fp);
fclose(fp);
return 0;
}
void read(FILE *fp)
{
int field,ichi,ni,san,i,j,date,all;
char gakuseki[NUM];
double avg;
printf("フィールド入力-->");
scanf("%d",&field);
i = 0;
all = 0;
while ( fscanf(fp,"%s ",gakuseki) != NULL )
{
for ( j = 1; j <= 3; j++ )
{
fscanf(fp,"%d ",&date);
if ( j == field && i < 5 )
{
printf("%d, ",date);
}
else if ( j == field && i == 5 )
{
printf("%d ",date);
}
all += date;
}
i++;
}
avg = (double)all/6;
printf("\n平均:%.1f",avg);
}
@shivase
Copy link

shivase commented Jul 12, 2015

  printf("引数不足");

細かいけど改行が無い.

@shivase
Copy link

shivase commented Jul 12, 2015

ファイルオープンエラーと、引数不足で2つのエラーにわけたのは良いね.

if( fp == NULL || argc == 2 )
{ }

とかでもいいかなぁとか一瞬思ったけど、エラー出力が違うので今のままでOK

@shivase
Copy link

shivase commented Jul 12, 2015

define NUM 100

他のでも言ったけど、NUMだと意味がわからないね.

入力できる学生数を表すようなので、MAX_STUDENTSとかかなぁ

while ( fscanf(fp,"%s ",gakuseki) != NULL || i < MAX_STUDENTS )

とかにすると、最大数以上入力できなくなるので、gakuseki[MAX_STUDENTS]が溢れなくて綺麗になる
(厳密には最大値部分がこれだとダメかもなので、考えてちょ

@shivase
Copy link

shivase commented Jul 12, 2015

  for ( j = 1; j <= 3; j++ )
  {
      fscanf(fp,"%d ",&date);

やり方が微妙かなぁ。
例えば以下のような感じで全部データをとって、fieldの値にしたがって特定の情報だけprintfした方が良い.

fscanf( in, "%s %d %d %d", name, &val1, &val2, &val3)

@shivase
Copy link

shivase commented Jul 12, 2015

avg = (double)all/6;

6ってどっからでてきた!?今回確かにファイルの中身は6個だけど、これファイルの中身が変わると対応できなくなるよー。ちゃんと数は計算すること

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment