gpt4 book ai didi

c - 读取文件时 "bypass"如何控制字符?

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

第一次在这里提问,我通常不需要发布任何东西就可以找到我所有的答案,但今天我被困在我的小程序中(我不是程序员所以如果错了我可能会这样做)。这是问题所在:我正在阅读日志文件,同时寻找一些关键字,相当简单。有时,日志文件包含带有大量控制字符的行(我不理解并且对我没有用)并导致我的程序停止读取,如下所示:

 Bla bla bla KEYWORD
Bla Bla [SUB][EM][ACK] (and a lot more)
Bla Bla KEYWORD"

我读了第一个关键字,但控制字符似乎就像我的循环的生命周期结束标记,因此之后我再也没有读过。这是我所做的:

FILE *fpIn = fopen(inFile, "r");
char chaine[100];
char searchKeyword[] = "KEYWORD";

while (!feof(fpIn))
{
fgets(chaine, 100, fpIn);

if(strstr(chaine, searchKeyword))
{
// do whatever...
}
}

如果有人能给我提示如何以简单的方式避免这些字符,我将不胜感激!谢谢!

最佳答案

如果您使用的是 Windows,控制字符 0x1A(Control-Z 或 SUB)将被视为文件结束指示。

你可以通过以二进制模式打开文件来避免这种情况(在 fopen 中使用“rb”而不是“r”,但是你会发现你的所有行都有一个 \r (0x0D) 结尾。(在文本模式下,行结尾被更正为单个 \n。)

关于c - 读取文件时 "bypass"如何控制字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48149462/

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