gpt4 book ai didi

c - 解析特定时间格式的字符串并将其打印到 C 文件中

转载 作者:太空宇宙 更新时间:2023-11-04 08:52:28 25 4
gpt4 key购买 nike

这里的目的是解析输入文件,如果文件中任何一行包含时间,我只需要从该行中提取时间信息并写入输出文件,其余行保持原样。我正在使用 fgets逐行获取并 sscanf 以查看所需的模式,但这会导致段错误。

这是我的代码:

#include<stdio.h>
int main()
{
FILE *fIn,*fOut;
char buffer[100];
int Hr=0,Min=0,Sec=0,MSec=0;
fIn = fopen("dat.txt","r+");
fOut= fopen("kel.txt","w+");
if (fIn == NULL) {
printf("Can't open input file in.list!\n");
exit(1);
}
while(!feof(fIn))
{
fgets(buffer,100,fIn);
#if 1
if(sscanf(buffer,"%u:%u:%u.%u",Hr,Min,Sec,MSec) ==4)
{
fprintf(fOut,"%02u:%02u:%02u.%6u",Hr,Min,Sec,MSec);
printf("hello");
continue;
}
#endif
fputs(buffer,fOut);
}
fclose(fIn);
fclose(fOut);
}

这里是 dat.txt 的几行:

17:48:22.618782 IP n003-000-000-000.static.ge.com > n003-000-000-000.static.ge.com: ICMP echo request, id 2105, seq 4, length 64
0x0000: b870 f414 033b b870 f414 0343 0800 4500
0x0010: 0054 0000 4000 4001 2e9c 0303 0305 0303
0x0020: 0303 0800 e69d 0839 0004 43bc 4a52 8d13
0x0030: 0300 0809 0a0b 0c0d 0e0f 1011 1213 1415
0x0040: 1617 1819 1a1b 1c1d 1e1f 2021 2223 2425
0x0050: 2627 2829 2a2b 2c2d 2e2f 3031 3233 3435
0x0060: 3637
17:48:22.618817 IP n003-000-000-000.static.ge.com > n003-000-000-000.static.ge.com: ICMP echo reply, id 2105, seq 4, length 64
0x0000: b870 f414 0343 b870 f414 033b 0800 4500
0x0010: 0054 7821 0000 4001 f67a 0303 0303 0303
0x0020: 0305 0000 ee9d 0839 0004 43bc 4a52 8d13
0x0030: 0300 0809 0a0b 0c0d 0e0f 1011 1213 1415
0x0040: 1617 1819 1a1b 1c1d 1e1f 2021 2223 2425
0x0050: 2627 2829 2a2b 2c2d 2e2f 3031 3233 3435
0x0060: 3637

实际上,我正处于尝试将上述数据包写入 text2pcap 可理解形式的阶段。我应该使用 c 代码 [od 和 hexdump 不会被使用]。

最佳答案

您需要将地址传递给sscanf以存储值:

if(sscanf(buffer,"%u:%u:%u.%u", &Hr, &Min, &Sec, &MSec) ==4)
^ ^ ^ ^

此外,正如 user694733 指出的那样,如果它们是无符号的(由 %u 暗示,请使用 unsigned int Hr 等等)。

关于c - 解析特定时间格式的字符串并将其打印到 C 文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19153833/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com