所以我的任务是将另一个文件中的某些内容输出到一个文件......假设输入文件是格式 (姓名#姓氏年龄(有 100 行,我必须以这种格式输出 15 岁以上的人 (名字年龄姓氏(我在结构中有这样的东西
struct person
{
char name[10];
char surname[10];
int age;
};
我可以,如果可以,我怎么能将我的输入文件发送到该结构(文件是二进制的(
如果您需要有关代码的更多帮助,请做一个第一个版本并编辑您的问题,然后添加评论,社区将为您提供帮助。
但是,如果您正在寻找方法论,则可以使用类似的东西:
- 在读取模式下打开要提取数据的文件(例如
fopen(filename, "r")
( - 检查文件是否正确打开
- 使用 while 并取 N 个字符和
fgets()
或使用getline()
(请注意,getline()
在 ISO/IEC TR 24731-2:2010 扩展中(参见 n1248(。
有很多关于如何逐行读取文件中的线程(例如,在 C 中逐行浏览文本文件( - 现在您正在寻找一种使用分隔符拆分行的方法,您可以使用
strtok()
,strsep()
/strpbrk()
,或者您可以自己实现一个简单的字符串分隔符(也许看看这个问题( -
接下来是 AGE 部分,您希望只复制 AGE 优于 15 的行,因此请使用
strtol()
将字符串转换为long int
然后检查值。
请勿使用atoi()
此函数已弃用(。atoi(( 函数已被 strtol(( 弃用,不应在新代码中使用。
源 Mac OS X 手册页(3(
-
然后,您需要创建和/或写入文件。您可以使用
fopen(newFilename, "w")
,检查函数给您的文件描述符作为回报,如果可以,您可以添加带有fprintf()
行(例如fprintf(fd, "%s %s %srn", name, age, surname);
(。
如果这是您在 c 中的第一个项目/练习之一,请花时间正确理解您使用的函数,并在使用它们之前始终检查返回的值。