【问题标题】:I am having trouble making a function that will open a file我无法创建将打开文件的函数
【发布时间】:2021-12-24 15:23:44
【问题描述】:
void writeResultsToFile(FILE *f, char arrTypeLabels[3][7], char sortNames[4][11], float times[4][3], int n);
void writeResultsToFile(FILE *f, char arrTypeLabels[3][7], char sortNames[4][11], float times[4][3], int n)
{
f= fopen( "TIMES.txt", "wb");
if((f=fopen("TIMES.txt", "wb"))==NULL) {
  printf("Cannot open file.n");
}   
if (f == NULL)
{
  printf("Error! Could not open file\n");
  exit(-1);
}
fprintf(f,"Array size: %d\n================\n                     ",n);
int i,j;
for(i=0;i<3;i++)
{
  for(j=0;j<7;j++)
  {
    fwrite(arrTypeLabels[i] + j, sizeof (char), sizeof (char), f);
  }
}
for(i=0;i<4;i++)
{
  for(j=0;j<11;j++)
  {
    fwrite(sortNames[i] + j, sizeof (char), sizeof (char), f);
    if (j==9 && i==0)
    {
      int df;
      for(df=0;df<3;df++) 
        fprintf(f,"    %f",times[0][df]);
    }
    if (j==9 && i==1)
    {
      int df;
      for(df=0;df<3;df++) 
        fprintf(f,"    %f",times[1][df]);
    }
    if (j==5 && i==2)
    {
      int df;
      fprintf(f,"       ");
      for(df=0;df<3;df++) 
        fprintf(f,"    %f",times[2][df]);
    }
    if (j==5 && i==3)
    {
      int df;
      fprintf(f,"       ");
      for(df=0;df<3;df++) 
        fprintf(f,"   %f",times[3][df]);
    }
  }
}
fclose(f);
}

//This is how i call it inside the main
writeResultsToFile(FILE *f,arrTypeLabels[3][7],sortNames[4][11],times[4][3],n);

里面的代码是对的,我在没有功能的情况下对其进行了测试,它可以工作,我只是不知道如何将其称为功能,如果有人可以提供帮助。

FILE 之前的预期表达式,以及冲突的类型错误...................................... ........

【问题讨论】:

  • 通过写FILE *f;,你正在隐藏writeResultsToFile的第一个参数

标签: c


【解决方案1】:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void writeResultsToFile(FILE *f, char arrTypeLabels[3][7], char 
sortNames[4][11], float times[4][3], int n); 

int main(int argc, char *argv[]) 
{
int n=10;
char arrTypeLabels[3][7]= {"Random", "ASC", "DESC"},sortNames[4] 
[11]={"Selection", "Insertion", "Shell", "Quick"};
FILE *f;
float times[4][3];

writeResultsToFile(f, arrTypeLabels, sortNames, times, n);
 
return 0;
}


void writeResultsToFile(FILE *f, char arrTypeLabels[3][7], char 
sortNames[4][11], float times[4][3], int n)
{
f= fopen( "TIMES.txt", "wb");
if((f=fopen("TIMES.txt", "wb"))==NULL) {
printf("Cannot open file.n");
}   
if (f == NULL)
{
printf("Error! Could not open file\n");
exit(-1);
}
fprintf(f,"Array size: %d\n================\n              ",n);
int i,j;
for(i=0;i<3;i++)
{
if(i==2){
fprintf(f,"   %s      ",arrTypeLabels[i]);
}
else{
 fprintf(f,"%s      ",arrTypeLabels[i]);
}
}
for(i=0;i<4;i++)
{
fprintf(f,"\n");
for(j=0;j<11;j++)
{
fwrite(sortNames[i] + j, sizeof (char), sizeof (char), f);
if (j==9 && i==0)
{
  int df;
  for(df=0;df<3;df++) 
    fprintf(f,"    %f",times[0][df]);
}
if (j==9 && i==1)
{
  int df;
  for(df=0;df<3;df++) 
    fprintf(f,"    %f",times[1][df]);
}
if (j==5 && i==2)
{
  int df;
  fprintf(f,"    ");
  for(df=0;df<3;df++) 
    fprintf(f,"    %f",times[2][df]);
}
if (j==5 && i==3)
{
  int df;
  fprintf(f,"    ");
  for(df=0;df<3;df++) 
    fprintf(f,"    %f",times[3][df]);
}
}
}
fclose(f);
}

【讨论】:

  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
【解决方案2】:
#include <stdlib.h>
#include <wchar.h>
#include <stdio.h>

int writeResultsToFile(FILE *f, char arrTypeLabels[3][7], char sortNames[4][11], float times[4][3], int n);

int writeResultsToFile(FILE *f, char arrTypeLabels[3][7], char sortNames[4][11], float times[4][3], int n)
{
    f = fopen("TIMES.txt", "wb");
    if ((f = fopen("TIMES.txt", "wb")) == NULL)
    {
        printf("Cannot open file.n");
    }
    if (f == NULL)
    {
        printf("Error! Could not open file\n");
        exit(-1);
    }
    fprintf(f, "Array size: %d\n================\n                     ", n);
    int i, j;
    for (i = 0; i < 3; i++)
    {
        for (j = 0; j < 7; j++)
        {
            fwrite(arrTypeLabels[i] + j, sizeof (char), sizeof (char), f);
        }
    }
    for (i = 0; i < 4; i++)
    {
        for (j = 0; j < 11; j++)
        {
            fwrite(sortNames[i] + j, sizeof (char), sizeof (char), f);
            if (j == 9 && i == 0)
            {
                int df;
                for (df = 0; df < 3; df++)
                    fprintf(f, "    %f", times[0][df]);
            }
            if (j == 9 && i == 1)
            {
                int df;
                for (df = 0; df < 3; df++)
                    fprintf(f, "    %f", times[1][df]);
            }
            if (j == 5 && i == 2)
            {
                int df;
                fprintf(f, "       ");
                for (df = 0; df < 3; df++)
                    fprintf(f, "    %f", times[2][df]);
            }
            if (j == 5 && i == 3)
            {
                int df;
                fprintf(f, "       ");
                for (df = 0; df < 3; df++)
                    fprintf(f, "   %f", times[3][df]);
            }
        }
    }
    fclose(f);
}

int main(void)
{
    //assign theses variables before calling your function
    char arrTypeLabels[3][7];
    char sortNames[4][11];
    float times[4][3];
    int n;
    //--------------------------

    FILE * f; //no need to assign this variable
    writeResultsToFile(f, arrTypeLabels, sortNames, times, n); //call your function like that
    return 0;
}

【讨论】:

  • 是的,tony,但我需要这个函数是一个 void 而不是一个 int,当 f 甚至不存在时,我应该如何将我的函数称为 f?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多