爲只讀GPA
與在fscanf
格式字符串附加參數賦值抑制,則需要類似fscanf (fp, "%*lf%lf%*s%*lf%*lf*", &save);
格式字符串。您必須考慮數據塊中的刺痛字符,否則您將遇到輸入故障和fscanf
。在一個函數使用fscanf
隔離GPA
的一個例子是:
#include <stdio.h>
#include <stdlib.h>
void readgpa (char *filenm)
{
FILE *fp = fopen (filenm, "r");
if (!fp) {
fprintf (stderr, "\n Error, invalid filename '%s'\n\n", filenm);
exit (1);
}
int cnt = 0;
double save;
while (fscanf (fp, "%*lf%lf%*s%*lf%*lf*", &save) != -1)
{
cnt++;
printf (" line: %d GPA: %.2f\n", cnt, save);
}
if (fp) fclose (fp);
}
int main (int argc, char **argv) {
if (argc < 2) {
fprintf (stderr, "\n Error, insufficient input. Usage: %s filename\n\n", argv[0]);
return 1;
}
readgpa (argv[1]);
return 0;
}
輸出:
$ ./bin/gpa dat/gpa.dat
line: 1 GPA: 3.78
line: 2 GPA: 2.65
line: 3 GPA: 3.10
line: 4 GPA: 3.95
line: 5 GPA: 2.45
'的fscanf(infile中, 「%* LF%LF%* LF%* LF」,&save); ' – BLUEPIXY 2014-09-20 23:15:51
使用'fgets'來讀取文件中的行,'sscanf'來轉換您關心的行上的值。 – user3386109 2014-09-20 23:16:14