邏輯:
- 循環而
!feof(FILE)
fgets()
1線
sscanf()
行
- 做你的計算!
下面的代碼可以被優化以降低對函數的調用,但清晰的表達,我創建了多種功能..每次只能做1個作業:
#include <stdio.h>
#include <string.h>
void get_data(const char *ptr, char *category, char *label, float *f1,
int *fint, float *f2, int *sint) //fint = first-int, sint is second int
{
sscanf(ptr,"%s%s%f%d%f%d\n", category, label, f1, fint, f2, sint);
}
const char *get_line(FILE *f, char *target, size_t size)
{
fgets(target, size, f);
}
double random_calculation(float f1, int fint, float f2, int sint)
{
return f1 * fint + f2 * sint;
}
int main(int argc, char *argv[])
{
char buffer[512];
char label[50], category[50];
FILE *file;
float f1, f2;
int fint,sint;
double answer;
if(argc != 2) { puts("No file!"); return 0;}
file = fopen(argv[1], "r");//open in text mode
if(!file) return;
while(!feof(file)) {
get_line(file, buffer, 511);
puts(buffer);
get_data(buffer, category, label,&f1,&fint, &f2, &sint);
answer = random_calculation(f1, fint, f2, sint);
printf(">>> %s %s: %lf\n\n", category, label, answer);
}
return 0;
}
只需點擊在文本模式下輸入並打開文件,關於行結束,一切都會好起來的。 – 2013-02-20 02:50:22