c言語 ファイル出力について
このようなプログラムを作成しました。
エクセルでファイルを出力したいのですが…
ファイルは作成できたものの、内容が書かれていません。
とても困っています↓
自分の力不足なのでしょうがどなたかお願いします。
#include <stdio.h>
#include <process.h>
#define S 256
#define I 100
#define J 100
#define K 3 //グループの数
void sum(int u[][J],int N,int n);
void sort(int y[],int N,int u[][J],int n);
void group(int num[],int u[][J],int N,int n);
void passege(int groupm[][J],int groupn,int u[][J],int n,int N);
void main (void)
{
FILE *fp;
int N=0,i=0,j=1,kou=0,n; //N:人数 n:問題数
static int u[I][J];
char buf[S];
//ファイルオープン
if ((fp=fopen("data_i2_3.csv","r"))==NULL){
printf("Can't open File\n");
exit(1);
}
// 問題数のカウント
fgets(buf,S,fp);
N+=1;
while(buf[i]!='\n'){
kou=kou++;
i+=1;
}
for(i=0;i<=kou;i=i+2){
u[N][j]=buf[i]-'0';
j=j++;
}
n=kou/2+1;
// レコードの読み込み
while (fgets(buf,256,fp)!=NULL){
N+=1;
// 文字型から数値型へ変換
j=1;
for(i=0;i<=kou;i=i+2){
u[N][j]=buf[i]-'0';
j=j++;
}
}
sum(u,N,n);
fclose(fp);
}
void sum(int u[][J],int N,int n)
{
static int y[I];
int i,ii;
//学習者iの得点の初期化
for(i=0;i<=I;i++)
y[i]=0;
//学習者iの得点の計算
for(i=1;i<=N;i++){
for(ii=1;ii<=n;ii++){
y[i]+=u[i][ii];
}
}
sort(y,N,u,n);
}
void sort(int y[],int N,int u[][J],int n)
{
int left,right,i,shift,t,v;
static int num[I];
//学習者の番号記憶用変数numの初期化
for(i=0;i<=I;i++)
num[i]=0;
for(i=1;i<=N;i++)
num[i]=i;
//シェーカーソート
left=0;
right=N;
while (left<right){
for(i=left;i<right;i++){
if(y[i]>y[i+1]){
t=y[i];
v=num[i];
y[i]=y[i+1];
num[i]=num[i+1];
y[i+1]=t;
num[i+1]=v;
shift=i;
}
}
right=shift;
for(i=right;i>left;i--){
if(y[i]<y[i-1]){
t=y[i];
v=num[i];
y[i]=y[i-1];
num[i]=num[i-1];
y[i-1]=t;
num[i-1]=v;
shift=i;
}
}
left=shift;
}
group(num,u,N,n);
}
void group(int num[],int u[][J],int N,int n)
{
int groupn,i,j,k=1; //groupn:グループの人数
static int groupm[K][I]; //groupm:グループのメンバー
groupn=N/K;
for(i=0;i<K;i++){
for(j=0;j<groupn;j++){
groupm[i][j]=num[k];
k+=1;
}
}
passege(groupm,groupn,u,n,N);
}
void passege(int groupm[][J],int groupn,int u[][J],int n,int N)
{
FILE *f;
int i,j,k=0,l,tt;
static int t[I]; //各グループの正解率
double p[K][J],pp=0.0;
//初期化
for(i=0;i<K;i++){
for(j=0;j<J;j++){
p[i][j]=0;
t[i]=0;
}
}
for(i=0;i<K;i++){
for(j=0;j<groupn;j++){
t[k]=groupm[i][j];
k+=1;
}
}
k=0;
for(i=0;i<K;i++){
for(j=1;j<=n;j++){
for(l=0;l<groupn;l++){
tt=t[k];
pp=pp+u[tt][j];
k+=1;
}
p[i][j]=pp/groupn;
pp=0.0;
if(i==0)
k=0;
else
k=groupn*i;
}
k=groupn*(i+1);
}
//ファイル出力
f=fopen("test1.csv","w");
//確認
putchar('\n');
for(i=0;i<K;i++){
for(j=1;j<=n;j++){
printf("%d群の項目%dの正解率は%fです\n",i,j,p[i][j]);
}
}
//ファイルを閉じる
fclose(f);
}
お礼
ありがとうございました^^ものすごく助かりました♪