c - 如何在 C 中没有库函数(使用 read() 系统调用)的文件中找到单词?

标签 c buffer system-calls

我只是想收集一个HTML格式文件中的标题。

如果我这样编码,

...
int rd;
char buffer[BUFF_SIZE];
do
{
    rd = read(0, buffer, BUFF_SIZE);
    ...
} while (rd == BUFF_SIZE);
...

那么无论如何我都可以读取文件直到 EOF,对吗?

我想在一个文件中找到“<title>”,但是,假设“”是在下一个缓冲区的开头读取的。在这种情况下,如何找到“<title>”?

还是我的buffer读取逻辑有问题?请帮助我。

抱歉我的英语不好。我希望你们明白。

最佳答案

正如@Adraino 提到的,您可以逐字符读取文件。

你只需要认出 '<'读取临时数组中的连续字符,直到遇到 '>'像这样:

int ch;
int i = 0;
do
{
  ch=fgetc(file );

  /*file is the file pointer*/
  if(ch=='<')
  {

    while(ch!='>'||ch!=EOF)
    {
      ch=fgetc();
      temp[i]=ch;
      i++;
    }

    temp[i]='\0';
    i=0;
  }

  if(strcmp(temp,"title")==0)

  // read the next characters and store them in a string til '<' is encountered.
  .
  .
} while(ch!=EOF);

希望对你有帮助

关于c - 如何在 C 中没有库函数(使用 read() 系统调用)的文件中找到单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26544964/

相关文章:

c - 我应该如何使用 C 将 time_t 时间戳存储到文件中?

linux - 使用 write syscall linux 的正确方法

c - 使用 gcc 编译时,函数和变量会以 "_"开头吗?

c - Makefile:将 C 代码转换为 mex 代码(链接错误)

emacs - 如何通过 eshell 在 Emacs 中打开文件?

Python-Opencv 在内存缓冲区上写入 x264 视频

cudaMemcpy 无效参数

linux - 为什么写系统调用在 linux x86_64 (nasm) 上最后打印 `%`?

Linux 系统调用

c - 链接共享库的正确方法是什么?