根据代码用C语言创建输入和输出文件?

时间:2015-07-25 17:08:38

标签: c file-io

这是我正在进行的第一次正式的C比赛。在过去几年的论文中他们有了 - 指定了一些名为芳香数字的东西,并被告知找到那些。我写了代码,它运作良好,但我无法理解这些有关输入和输出的说明以及如何在C for Windows中对它们进行编码。 From the previous paper

我知道从文件中读取一个字母并使用fopen()和fprintf和fscanf编写它。但是这些是用不同的行写的字母如何从in1.dat中提取变量并将它们打印在out1.dat中?

意味着我知道

 int main()
{
   int n;
   FILE *fptr;
   if ((fptr=fopen("D:\\program.dat","r"))==NULL){
       printf("Error! opening file");
       exit(1);         /* Program exits if file pointer returns NULL. */
   }
   fscanf(fptr,"%d",&n);
   printf("Value of n=%d",n+n); 
   fclose(fptr);   
   getch();
}

它会扫描第一行中的第一个值。但是他们要求多行(样本输入中有3行)怎么做?

2 个答案:

答案 0 :(得分:0)

尝试类似这样的事情:

    #include<stdio.h>

    int main()
    {
        FILE *in,*out;
        int num;
        char line[512],aronum[20];
        in = fopen("in.dat", "r");
        out = fopen("out.dat","w");
        fgets(line, 512, in); //to get number of test cases
        sscanf (line, "%d",&num);

        while((fgets(line, 512, in) != NULL) && (num--))
        {
             sscanf (line, "%s",&aronum);
             fprintf(out,"%d",calc(aronum)); //use `calc` func to return int ans.

        }

        fclose(in);
        fclose(out);
        return 0;
    }

答案 1 :(得分:0)

fscanf(fptr,"%d",&n);
printf("Value of n=%d",n+n); 

而是这样做 -

while(fscanf(fptr,"%d",&n))
{
   printf("Value of n=%d",n+n); //But notice here with every iteration n will be over-written.
}

这将在第一次转换失败或文件结束时停止。然后在此循环内,您可以写入输出文件。