博主在做一道算法题,验证哥德巴赫猜想,这道题百度一下全是答案,各种代码任你选择。但是博主的书上有个要求,要求从input.txt输入,从output.txt输出。
格式是
intput.txt中的示例数字为:
4
6
8
10
那么问题来了,如何读取这段数字,博主的思路是把这个读入到数组里,然后一个一个调出来验证猜想就好了,输出到文件也方便。但是,就是这样一个输出到数组,折腾了博主好久(博主很菜,勿喷。)
当用fgets()函数时,它每次只读取一个字节,就是说,a[0]=4,a[1]=6,a[2]=8,a[3]=1,a[4]=0所以两位数就不要考虑这个了,而且这个函数的参数是char*,如何将char*转为int类型也是个问题,不然没法比较。
虽然fgets()是按行读取,但是这个直接是字符串数组,都没有a[某某]。
不罗嗦了,直接贴代码。
#include <stdio.h>
#include <stdlib.h>
int main(){
FILE *fp;
fp=fopen("input.txt","r");
if(fp==NULL)
puts("file open error");
const int max=10;
int i,j=0;
int line[max];
while(!feof(fp))//判断当前的读写位置是否已经达到文件结束位置ps:说人话就是 循环按行读取文件内容
{
fscanf(fp,"%d",&i);
line[j]=i;
j++;
}
for(i=0;i<4;i++){
printf("%d\n",line[i]);
}
fclose(fp);
system("pause");
return 0;
}
这样line数组里直接就是int类型的一个一个的数,就能够直接用了。博主实在是蠢,想了好久,还请勿喷。