c# - 使用 Fopen 在 C 中读取文件并从中获取特定值

标签 c# c

我有一个 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 文件中打印 姓名:尼克·沙利文 年龄: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 下面有多少条线?

最佳答案

首先,我会推荐使用 fgetssscanf 而不是 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/

相关文章:

c - 指针字符数组可以工作,但打印时输出错误的字符

c - C中的一个小困惑

c - 如何通过引用传递结构并更改其值

c# - 自动处理 .NET 类中的多语言属性

c# - 为什么这个 RETURNING INTO 子句会返回一个错误?

c# - 将 List<T> 添加到另一个 List<T> 的开头

c - Valgrind 报告一个非常简单的 C 程序的错误

c - C语言删除子串的方法

c# - 在哪里可以找到 Microsoft.Office.Interop.Word.dll (2010)?

c# - 停止显示 chromedriver 控制台窗口,Selenium c#