目标:
问题1
程序应该从名为“prob1 input.dat”的文件中读取数字,该文件具有以下格式:
(number_of_entries)(entry1)(entry2)...
这意味着文件的第一行包含文件提供的条目数。以下行定义了每行包含一个条目的条目。在我们的例子中,每个条目都是一个正整数。程序应该读入所有条目并将它们存储在一个数组中。然后程序应检查数组中的每个值(如果它是素数),并将结果打印到名为“prob1 output.dat”的文件中。该文件应具有与文件“prob1 input.dat”提供的数字一样多的行。在输出文件的每一行中,程序应打印数字,然后“是素数”或“不是素数”。
BTW,文件中的所有数字都大于25
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main()
{
FILE *fptr;
char prob1_input[] = "prob1_input.dat";
int terms,i;
int x[]={};
fptr = fopen(prob1_input, "r");
if (fptr == NULL)
printf("Error in opening file %s",prob1_input);
terms = x[0];
for(i=0;i<terms;i++)
{
fscanf(fptr,"%d",&x[i]);
terms = x[0];
for(i=1;x[i]!=2;i++)
{
if(x[i]%2 == 0 || x[i]%3 == 0 || x[i]%5 == 0 || x[i]%7 == 0)
{
printf("%d is not a prime number\n",x[i]);
break;
}
else if (x[i] == 2 || x[i] == 3 || x[i] == 5 || x[i] == 7)
{
printf("%d is a prime number\n",x[i]);
break;
}
else
{
printf("%d is not a prime number\n",x[i]);
break;
}
}
}
return 0;
}
答案 0 :(得分:3)
为此使用分步方法(示例代码假定完全支持C99):
定义一个变量来保存要输入的值的数量。
size_t terms = 0;
从文件中读取进入您在1下定义的变量的值的数量。
fscanf(fptr, "%zu", &terms);
要保留要读取的其余值,请定义一个数组,其元素数量在2下读取。
x[1 + terms];
x[0] = terms;
将2下读取的值的数量读入3中定义的数组中。