如何将字符串(由用户输入)与文件中一行的第一个单词进行比较?

图尔卡斯

我真的很难理解字符数组如何在C中工作。这看起来应该很简单,但是我不知道要使用什么函数或如何使用它。

我希望用户输入一个字符串,并且要遍历文本文件,将该字符串与文件中每行的第一个单词进行比较。

这里的“单词”是指由非空格字符组成的子字符串。

非常感谢您的帮助!

编辑:更清楚地说,我想输入一个输入并在文本文件形式的数据库中搜索它。我知道如果它在数据库中,它将是一行的第一个字,因为这是如何格式化数据库的。我想我可以遍历数据库的每个单词,但这似乎效率较低。

在数据库中找到输入之后,我需要访问跟在它后面的两个词(在同一行上)以实现程序的最终目标(本质上是计算性的)

弗洛里斯

这是一些可以满足您要求的代码。我认为它将帮助您更好地了解字符串函数的工作方式。注意-对于输入和文本文件的条件调整情况,我没有做很多假设,因此有很多代码可以从输入中删除空格,并检查匹配是否确实是“第一个单词”,而不是“第一个单词的第一部分”。因此,此代码不会将输入“ hello”与“ helloworld 123 234”行匹配,但将与“ helloworld 123 234”行匹配。还要注意,它目前区分大小写。

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

int main(void) {
  char buf[100];     // declare space for the input string
  FILE *fp;          // pointer to the text file
  char fileBuf[256]; // space to keep a line from the file
  int ii, ll;

  printf("give a word to check:\n");
  fgets(buf, 100, stdin);    // fgets prevents you reading in a string longer than buffer
  printf("you entered: %s\n", buf);  // check we read correctly

  // see (for debug) if there are any odd characters:
  printf("In hex, that is ");
  ll = strlen(buf);
  for(ii = 0; ii < ll; ii++) printf("%2X ", buf[ii]);
  printf("\n");

  // probably see a carriage return - depends on OS. Get rid of it!
  // note I could have used the result that ii is strlen(but) but 
  // that makes the code harder to understand
  for(ii = strlen(buf) - 1; ii >=0; ii--) {
    if (isspace(buf[ii])) buf[ii]='\0';
  }

  // open the file:
  if((fp=fopen("myFile.txt", "r"))==NULL) {
    printf("cannot open file!\n");
    return 0;
  }

  while( fgets(fileBuf, 256, fp) ) {   // read in one line at a time until eof
    printf("line read: %s", fileBuf);  // show we read it correctly
  // find whitespace: we need to keep only the first word.
    ii = 0;
    while(!isspace(fileBuf[ii]) && ii < 255) ii++;
  // now compare input string with first word from input file:
  if (strlen(buf)==ii && strstr(fileBuf, buf) == fileBuf) {
        printf("found a matching line: %s\n", fileBuf);
        break;
    }
  }
  // when you get here, fileBuf will contain the line you are interested in
  // the second and third word of the line are what you are really after.
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

比较两个文件并仅打印与字符串不匹配的行的第一个单词

来自分类Dev

如何使用sed将一行中的第一个单词与最后一个单词进行比较?

来自分类Dev

Java:仅采用用户输入字符串的第一个单词

来自分类Dev

Java:仅采用用户输入字符串的第一个单词

来自分类Dev

如何将对向量中的对的第一个元素(字符串)与另一个字符串进行比较?

来自分类Dev

如何将字符串限制为仅包含第一个单词或文本,但不包含第一个分号?

来自分类Dev

如何在给定行中对第一个单词进行子字符串化

来自分类Dev

获取单词和空格字符串中的第一个单词-在空格之前对第一个单词进行子字符串化

来自分类Dev

将字符串的第一个单词更改为第一个字母

来自分类Dev

Python:如何将列表的最后一个元素与字符串的字符进行比较

来自分类Dev

如何在一行中第一个字符后匹配字符串

来自分类Dev

如何仅从每一行的第一个单词中删除特定字符?

来自分类Dev

如何将一个输入字段的每个单词存储在新字符串中

来自分类Dev

读取文本文件的每一行并获取第一个拆分字符串

来自分类Dev

提取文本文件每一行的第一个带引号的字符串

来自分类Dev

mysql仅将字符串的第一个数字部分与int列进行比较,其中

来自分类Dev

Python-清除嵌套循环中一行的第一个单词

来自分类Dev

如何在与用户给定前缀匹配的字符串向量中找到第一个单词?

来自分类Dev

如何在C#中一行的第一个空格处插入单词?

来自分类Dev

SED:如何使用Sed在字符串的第一个实例之后打印每一行?

来自分类Dev

如何将每一行的第一个字符转换为大写?

来自分类Dev

读取文件的第一行并将其与外壳文件中的字符串进行比较

来自分类Dev

将字符串中的第一个单词大写

来自分类Dev

仅将字符串的第一个单词转换为小写

来自分类Dev

仅将字符串的第一个单词转换为小写

来自分类Dev

在长字符串的每个新行上都得到第一个单词?

来自分类Dev

如何仅使用String类将字符串的第一个单词更改为大写

来自分类Dev

如何使用sed将具有3个单词的一行中的第一个单词加倍?

来自分类Dev

将第一个文件中的每一行与第二个文件中的所有行进行比较?

Related 相关文章

  1. 1

    比较两个文件并仅打印与字符串不匹配的行的第一个单词

  2. 2

    如何使用sed将一行中的第一个单词与最后一个单词进行比较?

  3. 3

    Java:仅采用用户输入字符串的第一个单词

  4. 4

    Java:仅采用用户输入字符串的第一个单词

  5. 5

    如何将对向量中的对的第一个元素(字符串)与另一个字符串进行比较?

  6. 6

    如何将字符串限制为仅包含第一个单词或文本,但不包含第一个分号?

  7. 7

    如何在给定行中对第一个单词进行子字符串化

  8. 8

    获取单词和空格字符串中的第一个单词-在空格之前对第一个单词进行子字符串化

  9. 9

    将字符串的第一个单词更改为第一个字母

  10. 10

    Python:如何将列表的最后一个元素与字符串的字符进行比较

  11. 11

    如何在一行中第一个字符后匹配字符串

  12. 12

    如何仅从每一行的第一个单词中删除特定字符?

  13. 13

    如何将一个输入字段的每个单词存储在新字符串中

  14. 14

    读取文本文件的每一行并获取第一个拆分字符串

  15. 15

    提取文本文件每一行的第一个带引号的字符串

  16. 16

    mysql仅将字符串的第一个数字部分与int列进行比较,其中

  17. 17

    Python-清除嵌套循环中一行的第一个单词

  18. 18

    如何在与用户给定前缀匹配的字符串向量中找到第一个单词?

  19. 19

    如何在C#中一行的第一个空格处插入单词?

  20. 20

    SED:如何使用Sed在字符串的第一个实例之后打印每一行?

  21. 21

    如何将每一行的第一个字符转换为大写?

  22. 22

    读取文件的第一行并将其与外壳文件中的字符串进行比较

  23. 23

    将字符串中的第一个单词大写

  24. 24

    仅将字符串的第一个单词转换为小写

  25. 25

    仅将字符串的第一个单词转换为小写

  26. 26

    在长字符串的每个新行上都得到第一个单词?

  27. 27

    如何仅使用String类将字符串的第一个单词更改为大写

  28. 28

    如何使用sed将具有3个单词的一行中的第一个单词加倍?

  29. 29

    将第一个文件中的每一行与第二个文件中的所有行进行比较?

热门标签

归档