gpt4 book ai didi

C 文本解析器无法识别单词

转载 作者:行者123 更新时间:2023-11-30 15:12:23 40 4
gpt4 key购买 nike

我正在尝试使用 C 程序对文本进行简单的解析。我编写的函数应该检查保存有一行文本的缓冲区,并查看该行是否包含 BOL 处的特定单词。

输入参数是:

  • size:sizeof(word),在调用函数之前计算。
  • buf:包含正在解析的文本中的一行的缓冲区。
  • word:函数在 BOL 中查找的单词。

代码如下:

#include <stdio.h>
#include <string.h>

int strchk(int size, const char buf[1024], char *word) {
char a[size];

int i;
for (i = 0; i < size - 1; i++) {
a[i] = buf[i];
}
if (strcmp(a, word) == 0)
return 1;
else
return 0;
}

问题是由于某种原因,某个单词无法被识别。之前的单词已被相同的函数正确识别。下面是调用该函数的两个上下文,第一个会导致正确的识别,第二个则不会,而文本在文本内不同行的开头包含这两个单词。

char c[] = "|conventional_long_name";
if (strchk(sizeof(c), buf, c)) {
fputs(" conventional_long_name: \"", stdout);
getdata(buf, c, sizeof(c));
}

char d[] = "|official_languages";
if (strchk(sizeof(d), buf, d)) {
fputs(" religion: \"", stdout);
getdata(buf, d, sizeof(d));
}

当我首先在 strchk() 函数中检查字符串 a 的大小时,它给出的大小为 20,但是如果我让它打印出字符串,它会告诉我它实际上是 |official_languagesfici。当您计算字符数时,它与前面提到的 |conventional_long_name 一样长,这表明该函数调用中的某些参数在下一个函数调用中起作用,我只是无法弄清楚我在哪里犯了错误。任何帮助将不胜感激。

最佳答案

您需要在函数strchk中设置a数组的空终止符。

使用它来实现

a[size - 1] = '\0';

for循环之后。

<小时/>

注释:

关于C 文本解析器无法识别单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35107503/

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