我使用兩個函數從文件中讀取雙精度(read_double)和整數(read_integer)。 文件格式是如下在不包括字符()的用fscanf讀取文件的下一行()
12345678 (ID)
3.78 (GPA)
3 (Year)
20.5 (Age)
有文件中的這些條目5被讀取。
#include <stdio.h>
double read_double(FILE *infile)
{
double double1=0.0;
fscanf(infile, "%lf",&double1);
return double1;
}
int read_integer(FILE *infile)
{
int int1=0;
fscanf(infile, "%d",&int1);
return int1;
}
int main(void)
{
FILE *inp,*outp;
double gpa1=0.0;
int id1=0;
inp=fopen("input.txt","r");
outp=fopen("output.txt","w");
id1=read_integer(inp);
gpa1=read_double(inp);
printf("%d, %.2lf",id1,gpa1);
return 0;
}
當這段代碼運行時,它打印的學號是12345678,然後打印1.00。這是因爲它再次讀取ID。
我怎麼會做出這種讀取第二行並返回GPA(3.78)
我需要讓main
是在一個文件分割程序,以及其他功能上的另一個。請注意:我將不得不這樣做5次我們還沒有「學習while語句或」gets()「,所以請儘量不要使用這些或更復雜的方法。
該代碼在我的電腦上正常工作。我刪除了未使用的變量(並刪除了'output.txt'這一行,但它並沒有被使用),它編譯時沒有錯誤或警告,即使使用'-Wall',打印12345678,然後打印3.78。我在Linux上使用gcc 4.9.1。 – Jay 2014-09-24 19:08:45
@Jay這是當你從頭文件調用read_integer()和read_double()嗎? – user3482104 2014-09-24 19:12:45
我不明白你的意思...什麼頭文件? :-)我編譯它,然後將這些值放在一個名爲'input.txt'的文件中並運行它。結果是正確的。 – Jay 2014-09-24 19:14:49