gpt4 book ai didi

c - 从制表符分隔的文件中读取记录

转载 作者:行者123 更新时间:2023-11-30 15:09:43 26 4
gpt4 key购买 nike

输入文件:

Joe Smith    10 Main St.    555-1212

我正在从具有上述格式的文件中读取一条记录,该文件包含 3 个字段:姓名、地址和电话号码,以制表符分隔。

while (fscanf(fp, "%s%s%s", rec[size].name, rec[size].address, rec[size].phone_number) != EOF)
{
size++;
}

我必须包含第一个单词的空格并忽略制表符并开始阅读下一个字段。

最佳答案

char buffer[4096];
int n;

while (fgets(buffer, sizeof(buffer), fp) != 0)
{
if ((n = sscanf(buffer, "%[^\t] %[^\t] %[^\t\n]",
rec[size].name, rec[size].address, rec[size].phone_number)) != 3)
{
if (n != EOF)
fprintf(stderr, "Error: faulty record without 3 fields at:\n%s",
buffer);
break;
}
size++;
}

请注意,这使用 fgets() 来读取行。它检查 sscanf() 是否读取了三个字段。你不应该得到n == EOF,但测试以防万一。错误消息在标准错误上报告,并包括导致问题的行(fgets() 加上 sscanf() 的主要优点之一是您可以捕获的行用于重试或错误报告)。

关于c - 从制表符分隔的文件中读取记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36536352/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com