这是我正在进行的第一次正式的C比赛。在过去几年的论文中他们有了 - 指定了一些名为芳香数字的东西,并被告知找到那些。我写了代码,它运作良好,但我无法理解这些有关输入和输出的说明以及如何在C for Windows中对它们进行编码。
我知道从文件中读取一个字母并使用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行)怎么做?
答案 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.
}
这将在第一次转换失败或文件结束时停止。然后在此循环内,您可以写入输出文件。