c - 在C程序中在txt文件的一行中搜索2个不同的单词

标签 c string search

我是 C 新手,我得到了一个包含如下数据的 .txt 文件:

  1. ID 日期时间名称国家/地区
  2. 43 12/2 01:18 艾米·AB
  3. 347 12/12 12:30 艾米 BC
  4. 95 10/1 10:00 鲍勃·AB
  5. ...

名称仅等于 Amy/Bob/Cathy 并且

国家/地区仅等于 AB/BC/BD/DE

我需要读取该文件并执行以下操作:

示例1,我需要在.txt文件中搜索country = AB的Amy,并统计有多少条数据满足这种情况

示例 2,使用国家 = DE 和计数搜索 Amy

我不知道如何同时检查名称和国家/地区,这是我的代码:

#include <stdio.h>
#include <string.h>
int main(){
    int i;
    char s[10];
    while(scanf("%s", s)==1){
         if (strcmp(s,"Amy")==0){
             if (strcmp(s,"AB")==0){
                 ++i;
             }
         }        
    }

我认为第二个 if 不应该使用 s 与“AB”进行比较,但我能做什么? 请帮忙,谢谢!

最佳答案

假设您的行始终采用以下格式:

43 12/2 01:18 Amy AB

int int/int int:int string string

您可以使用scanf来解析该行:

scanf("%*d %*d/%*d %*2d:%*2d %s %s", name, country);

其中namecountry是两个有足够空间存储数据的缓冲区。

<小时/>

示例:

const char* s = "43 12/2 01:18 Amy AB";
char name[16]; char country[16];
sscanf(s, "%*d %*d/%*d %*2d:%*2d %s %s", name, country);

assert(strcmp(name, "Amy") == 0);
assert(strcmp(country, "AB") == 0);

on wandbox

<小时/>

另一种可能的解决方案可以使用 strstr定位输入中特定子字符串(在您的情况下为名称和国家/地区)的位置。

关于c - 在C程序中在txt文件的一行中搜索2个不同的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42515274/

相关文章:

php - ajax搜索如何检查某个短语是否包含搜索的单词

javascript - 单击任意位置即可关闭菜单

c - 我的 while 循环上的错误代码,试图逐行读取文件。在C中

c - 在 __m256i vector 中水平累积运行总计(前缀总和)

java - http请求得到的字符串会保存在常量池中吗?

c++ - string_algo 的 boost to_upper 函数没有考虑语言环境

c - Linux shell 脚本错误

c - 为什么我的数组元素被覆盖?

r - 如何在R中的字符中查找字符串

python - 在 python 中搜索非常长的文本文件中的单词的简单方法是什么?