我有一个C输入文件,正在用Fopen读取。 。 。 。
该文件如下所示:
Nick
Sullivan
24
lat long north
1002.3 341.23 123.9
1002.3 341.23 123.9
1002.3 341.23 123.9
1002.3 341.23 123.9
1002.3 341.23 123.9
...... tons of lines like this
我的目标是在我的C文件中打印
姓名:尼克·沙利文(Nick Sullivan)
年龄:24岁
GPS点数:[这里是下面所有数字线的计数]
目前我有:
fscanf(fp, "%s\n%s\n%s", FirstName, LastName, age);
printf("Full Name :%s %s\n",FirstName, LastName);
printf("Age: %s years old", age);
我如何计算LAT LONG NORTH以下有几行?
最佳答案
首先,我将推荐fgets
和sscanf
而不是fscanf
。它使您可以更好地控制阅读过程。特别是,您应该避免使用fscanf
和%s
,因为它会打开缓冲区溢出。
使用fgets
,您可以执行以下操作:
#define MAX_LINE_LEN 256
char str[MAX_LINE_LEN];
char FirstName[MAX_LINE_LEN];
char LastName[MAX_LINE_LEN];
unsigned age;
size_t lineCount = 0;
// Open file and check for succes
if (fgets(FirstName, MAX_LINE_LEN, fp) == NULL)
exit(1); // error
if (fgets(LastName, MAX_LINE_LEN, fp) == NULL)
exit(1); // error
if (fgets(str, MAX_LINE_LEN, fp) == NULL)
exit(1); // error
if (sscanf(str, "%u", &age) != 1)
exit(1); // error
if (fgets(str, MAX_LINE_LEN, fp) == NULL) // Skip the "lat long north"
exit(1); // error
// Count lines;
float f1, f2, f3;
while(fgets(str, MAX_LINE_LEN, fp) != NULL)
{
if (sscanf(str, "%f %f %f", &f1, &f2, &f3) != 3) break;
++lineCount;
}
关于c# - 使用Fopen读取C中的文件并从中获取特定值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53587998/