我是C的新手,我获得了一个包含以下数据的.txt文件:
名称将仅等于Amy / Bob / Cathy和
国家/地区将仅等于AB / BC / BD / DE
我需要阅读文件并执行以下操作:
示例1,我需要在.txt文件中搜索country = AB的Amy并计算满足这种情况的数据量
示例2,搜索具有country = DE和count
的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;
}
}
}
我认为第二个不应该使用s来与“AB”进行比较,但我该怎么办? 请帮助和谢谢!
答案 0 :(得分:1)
假设您的行总是采用以下格式:
scanf
您可以使用scanf("%*d %*d/%*d %*2d:%*2d %s %s", name, country);
来解析该行:
name
country
和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);
是两个缓冲区,有足够的空间来存储数据。
示例:
2017-02-21 23:45:41.7734 | MyLogger | INFO | PathInfo [/json/api/GetData] Duration [821,1381 ms] IpAddress [xx.xx.xx.xx] RequestParam [{"MyObj":{"UserId":87026,"SessionId":1022977,}]
另一种可能的解决方案是使用strstr
来定位输入中特定子字符串(在您的情况下为名称和国家/地区)的位置。