原則、paizaでfopen関数は使えない。
ストリーム出力だけなら、次のコードでも出力だけはできる。
<コード例>
#include
#include
#define NAME_LEN 50
#define NINZU_MAX 100
int main( void ){
FILE *fp;
int i, j;
int ninzu = 0;
char name[ NAME_LEN ][ NINZU_MAX ];
double height[ NINZU_MAX ];
double weight[ NINZU_MAX ];
double hsum = 0;
double wsum = 0;
if ( ( fp = fopen ( "abc.txt", "r" ) ) == NULL )
printf ( "そのファイルをオープンできません。\n" );
else {
for ( i = 0; i < NINZU_MAX; i++ ) {
if ( fscanf ( fp, "%s%lf%lf",
/* 名前・身長・体重の3項目の読み込みができれば3が返却される */
name[ ninzu ], &height[ ninzu ], &weight[ ninzu ] ) != 3 )
break;
hsum += height[ ninzu ];
wsum += weight[ ninzu ];
ninzu++;
}
/* 身長の昇順にソート */
for ( i = 0; i < ninzu - 1; i++ ){
for ( j = ninzu - 1; j < i ; j-- ){
if ( height[ j - 1 ] > height[ j ] ){
char tn[ NAME_LEN ];
double td;
strcpy ( tn, name[ j ] );
strcpy ( name[ j ], name[ j - 1 ] );
strcpy ( name[ j - 1 ], tn );
td = height[ i ]; height[ j ] = height[ j - 1 ]; height[ j - 1 ] = td;
td = weight[ i ]; weight[ j ] = weight[ j - 1 ]; weight[ j - 1 ] = td;
}
}
for ( i = 0; i < ninzu; i++ )
printf ( "%-10s %5.1f %5.1f \n", name[ i ], height[ i ], weight[ i ] );
printf ( "--------------------\n" );
printf ( "平均 %5.1f %5.1f\n", hsum / ninzu, wsum / ninzu );
fclose ( fp );
}
}
return 0;
}