C - 如何将文件中的单行保存到两个不同的字符串 ̧在结构>>行格式(姓名#姓氏年龄)



所以我的任务是将另一个文件中的某些内容输出到一个文件......假设输入文件是格式 (姓名#姓氏年龄(有 100 行,我必须以这种格式输出 15 岁以上的人 (名字年龄姓氏(我在结构中有这样的东西

struct person
{
char name[10];
char surname[10];
int age;
};

我可以,如果可以,我怎么能将我的输入文件发送到该结构(文件是二进制的(

如果您需要有关代码的更多帮助,请做一个第一个版本并编辑您的问题,然后添加评论,社区将为您提供帮助。

但是,如果您正在寻找方法论,则可以使用类似的东西:

  1. 在读取模式下打开要提取数据的文件(例如fopen(filename, "r")(
  2. 检查文件是否正确打开
  3. 使用 while 并取 N 个字符和fgets()或使用getline()(请注意,getline()在 ISO/IEC TR 24731-2:2010 扩展中(参见 n1248(。
    有很多关于如何逐行读取文件中的线程(例如,在 C 中逐行浏览文本文件(
  4. 现在您正在寻找一种使用分隔符拆分行的方法,您可以使用strtok()strsep()/strpbrk(),或者您可以自己实现一个简单的字符串分隔符(也许看看这个问题(
  5. 接下来是 AGE 部分,您希望只复制 AGE 优于 15 的行,因此请使用strtol()将字符串转换为long int然后检查值。
    请勿使用atoi()此函数已弃用(。

    atoi(( 函数已被 strtol(( 弃用,不应在新代码中使用。

    源 Mac OS X 手册页(3(

  6. 然后,您需要创建和/或写入文件。您可以使用fopen(newFilename, "w"),检查函数给您的文件描述符作为回报,如果可以,您可以添加带有fprintf()行(例如fprintf(fd, "%s %s %srn", name, age, surname);(。

如果这是您在 c 中的第一个项目/练习之一,请花时间正确理解您使用的函数,并在使用它们之前始终检查返回的值

最新更新