C编程,从文件中读取特定部分

时间:2014-03-06 16:30:11

标签: c

我的问题是如何从文件中读取特定部分?例如,如果我的文件是: 454545454 Joe Brown 70 50 40 656565656 David Smith 80 90 100 383838383 George Williams 95 100 80

我如何读取第一个字符串(9位#),跳过名称,然后阅读3组数字?

2 个答案:

答案 0 :(得分:0)

不是“阅读特定部分”,而是逐行读取文件并保存所需信息并丢弃其他信息。 scanf用于从外部源格式化读取到程序变量中。由于scanf返回源的成功读取次数,因此您可以使用它来执行一些错误检查。

char num_string[STR_LEN];
int numbers[3];
char dummy1[STR_LEN], dummy2[STR_LEN];
int num_read = scanf( "%s%s%s%d%d%d", num_string, dummy1, dummy2, &numbers[0], &numbers[1], &numbers[2] );

if( num_read != 6 )
    // error
else
{
    // do stuff with num_string, and numbers[0]-numbers[2]
}

答案 1 :(得分:0)

我认为您可以注意到白色空间是您的哨兵。我想也许你可以将整个文件存储到一个char *中,每次都要求这个标记。 其他解决方案可能是使用atoi(ascii到int)来验证它是数字还是字母。您还可以阅读freadfseek

我认为最好的方法是混合使用两个解决方案...找到每个标记并尝试使用atoi解析它。

主要思想是你试图在文件中找到一些允许你思考算法的模式。 在C语言中,大多数时候你必须自己解决逻辑问题。

希望它有所帮助!