如何扫描.txt文件并返回或删除C中具有匹配字符串的行?

问题描述 投票:0回答:1

我下面有一个文本文件。我想阅读每一行并搜索名称Bob。如果找到,我想返回整行(例如Bob male 45)。另外,我想阅读每一行并搜索术语male。如果找到,则删除这些行(例如,删除Bob male 45Time male 35)。

Bob male 45
Susan female 40
Tim male 35
c file fopen
1个回答
0
投票

您可以使用fgets读取输入文件的每一行,然后使用sscanf来读取此行的每个值。然后,使用strcmp在两个字符串(namesex)之间进行比较。

例如:

char name[256], sex[7];
int age;
char line[256];
FILE *fp = fopen("input.txt", "r");
if(!fp) {
   // handle the error
}
while(fgets(line, sizeof(line), fp) {
   int num = sscanf("%s %s %d\n", name, sex, &age);
   if(num != 3) {
      // handle the error
   }
   if (strcmp(name, "Bob") == 0) {
      // Do smth you want
   }

   if (strcmp(sex, "male") == 0) {
      // Do sth you want
   }

}
© www.soinside.com 2019 - 2024. All rights reserved.