gpt4 book ai didi

c - 在 C 中解析文件以读取字符

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

假设我有一个文件,其中充满了带有空格的随机字符,并且\n 也是随机的。

我想查找这组字符,例如:UU、II、NJ、KU。所以目的是读取文件,查找此类组并说出文件中有多少。

我的问题是空格和\n,因为如果我找到其中一个,我应该跳过它并再次搜索组。我找到了一个可以帮助我的解决方案,函数 strtok_r

http://www.codecogs.com/reference/computing/c/string.h/strtok.php?alias=strtok_r

我认为这会隔离完整的字符串,这样我就可以一次读取一个。

这是一个好的解决方案还是应该采用其他方法?

最佳答案

一个天真的解决方案可能一次读取一个字符,当它是 'U''I''N''K' 然后读取另一个字符以查看它是否是组中的下一个字符。如果是,则为该组增加一个计数器。所有其他字符都被简单地丢弃。

编辑:示例函数:

int count_uu = 0;
int count_ii = 0;
int count_nj = 0;
int count_ku = 0;

void check_next_char(int expected, FILE *input, int *counter);

void count(FILE *input)
{
int ch; /* Character we read into */

while ((ch = fgetc(input)) != EOF)
{
switch (ch)
{
case 'U':
check_next_char('U', input, &count_uu);
break;
case 'I':
check_next_char('I', input, &count_ii);
break;
case 'N':
check_next_char('J', input, &count_nj);
break;
case 'K':
check_next_char('U', input, &count_ku);
break;

default:
/* Not a character we're interested in */
break;
}
}

/* This function gets the next character from a file and checks against
an `expected` character. If it is same as the expected character then
increase a counter, else put the character back into the stream buffer */
void check_next_char(int expected, FILE *input, int *counter)
{
int ch = fgetc(input);
if (ch == expected)
(*counter)++;
else
ungetc(ch, input);
}

关于c - 在 C 中解析文件以读取字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13084989/

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