oj关于C语言文本文件处理

求解惑
题目就是这样,没有增加我个人的任何东西
我知道这是java的程序,也不理解为什么题目这样出,但要用c语言的方法解决问题

题目描述
已知一个文本文件,文件名为dict.dic。它是由下边的代码生成。
    int a ;
    boolean b = true ;
    double c , f ;
    String d ;
    PrintWriter out = new PrintWriter("dict.dic");
    Scanner cin = new Scanner(System.in);
    for (int i = 0 ; i < 5 ; i ++ ) {
         a = cin.nextInt() ;
         f = Math.random() ;
         if ( f > 0.5 ) b = true ;
         else b = false ;
         c = cin.nextDouble() ;
         d = cin.next() ;
         out.println(a) ;
         out.println(b) ;
         out.println(c) ;
         out.println(d) ;
    }
    out.close(); // Remember this!
    cin.close();
  }
你的任务是写一段程序,将这些内容读出来。
输入:
为一个整数,只可能是12345之一。
输出:
将dict.dic中的相关内容输出到屏幕上,如果输入是1,则输出那段代码第一次循环写入的内容,如果输入是2,则输出那段代码第二次循环写入的内容,依此类推。
形式如样例。double类型的不是保留一位小数,直接输出就可以了。
样例输入:
1
样例输出:
100
false
72.5
helloworld


struct sData{
    
    int i;
    char cb[100];
    double d;
    char c[100];
};


int ReadDataInfo(const char* filename, struct sData** pdata)
{
    
    FILE *fp;
    char ch;
    int i=1,j;
    fp=fopen(filename,"r");
    if(fp==NULL)
    {
        printf("cann't open the file");
        exit(-1);
    }
    ch=fgetc(fp);
    while(ch!=EOF)
    {
       if(ch=='\n')
        {
            i++;
        }
        ch=fgetc(fp);
    }
    rewind(fp);
    
    char buf[100]={0};
    char *ptr;
    *pdata=(struct sData*)malloc(sizeof(** pdata)*(i/4));
    
    for(j=0;j<i/4;j++)
    {
        memset(*pdata+j,0,sizeof(struct sData));
        fgets(buf,100,fp);
        (*pdata+j)->i = atoi(buf);
        
        fgets(buf,100,fp);
        
        for (int m=0;m<strlen(buf)-1;m++)
        {
            (*pdata+j)->cb[m] = buf[m];
        }

        fgets(buf,100,fp);
        (*pdata+j)->d = strtod(buf,&ptr);
        
        fgets(buf,100,fp);
        for (int m=0;m<strlen(buf)-1;m++)
        {
            (*pdata+j)->c[m] = buf[m];
        }
    
    }
    fclose(fp);

    return i/4;
}

int main ()
{
    
    int i,count;
    int m;
    struct sData *list;
    
      count=ReadDataInfo("c:\\1.txt", &list);
      
      printf("Input the number");
      scanf("%d", &i);
      
      if(i>0 && i<=count)
      {
          printf("%d\n",list[i-1].i);
          printf("%s\n",list[i-1].cb);  
          printf("%lf\n",list[i-1].d);  
          printf("%s\n",list[i-1].c); 
      }


     free(list);
     list = NULL;
    
    return 0;
}

img

循环次数固定是5次?样例输出的内容应该是文件中的,而不是输入的吧。

这是java吧,你上面标签是c语言😂😂,通过switch语言分支把内容一一读出来就行啊

首先,你这是java程序,采用java的if进行判断

import java.util.*;
import java.io.*;

public class Socre {


    public static void main(String[] args) throws Exception {

        int a ;
        boolean b = true ;
        double c , f ;
        String d ;
        PrintWriter out = new PrintWriter("dict.dic");
        Scanner cin = new Scanner(System.in);
        for (int i = 0 ; i < 5 ; i ++ ) {
            a = cin.nextInt() ;
            f = Math.random() ;
            if ( f > 0.5 ) b = true ;
            else b = false ;
            c = cin.nextDouble() ;
            d = cin.next() ;
            out.println(a) ;
            out.println(b) ;
            out.println(c) ;
            out.println(d) ;
        }
        out.close(); // Remember this!
        cin.close();
    }
   
    



}