【问题标题】:Finding a whole word in text file by using 4-7 letters使用 4-7 个字母在文本文件中查找整个单词
【发布时间】:2014-01-21 16:00:35
【问题描述】:

我是 C 的新手,我很高兴能在这个程序上提供任何帮助:

任务:

用户将输入 4-7 个字母(例如“ADFG”)。

我已经分离了包含大约几千个单词的文本文件

(例如:

  • BDF
  • BGFK
  • JKLI
  • NGJKL
  • POIUE

等等)

-它写在没有那个标记的列表中

我想做一个程序,从这个文本文件中查找单词,这些单词与用户输入的字母相同(在这种情况下,当我输入 ADFG 时,它会找到并显示 BDF、BGFK、NGJKL)。

这是我目前的代码:

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

int main() 
{
    char enter[8],row[80];

    printf("4-7 different letteres: ");
    gets(enter);

    if (strlen(enter)>7 || strlen(enter)<4)
    {
        puts("incorrect number of letters"); 
        return 1;
    }

    typedef struct structure
    {
        char row[50];
    }Row;

    Row textrow[40000];

    FILE *file;
    file = fopen("words.txt","r");

    if (file==NULL)
    {
        printf("Error! File %s can not be opened.","words.txt");
        return 1;
    }

    int i=0;
    char words[30];

    while (!feof(file))
    {
        fscanf(file,"%s",&textrow[i].row[0]);
        for(int j=0;j<strlen(enter);j++)
        {
            for(int k=0;k<strlen(textrow[i].row);k++)
            {
                words=strchr(textrow[i].row[k],enter[j]);
                printf("%s",words);
            }
        }
        i++;
    }

    fclose(file);
    return 0;
} 

感谢您的帮助。

【问题讨论】:

  • Never use gets。除此之外,您发布的代码有问题吗?您有具体问题吗?
  • 是的,我的代码有问题,我卡住了,我真的不知道如何完成它:/
  • 这还不够具体。它运行吗?编译失败了吗?它会给你不正确的结果吗?它会崩溃吗?
  • 然后发布编译错误,看在上帝的份上!
  • 如果只是扫描文件,则无需存储所有行/单词;只为当前处理的提供存储就足够了。

标签: c windows string text-files codeblocks


【解决方案1】:

例如使用strpbrk

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

int main(){
    char *words[] = {
        "BDF", "BGFK", "JKLI", "NGJKL", "POIUE", NULL
    };
    char enter[8] = "ADFG";
    char **p;
    for(p = words; *p ; ++p){
        char *word = *p;
        if(strpbrk(word, enter)!=NULL){
            printf("%s\n", word);
        }
    }
/*
BDF
BGFK
NGJKL
*/
    return 0;
}

【讨论】:

  • 好建议 - strpbrk().
【解决方案2】:

正如其他人所评论的那样,鉴于您的代码可能能够按原样编译和构建,您的问题在于方法,您需要确定完成所需的步骤。创建算法。以下是一些步骤来做我认为你想做的事情:

问题陈述: 给定一个包含多个单词的文本文件,并且用户输入 1 个或多个字符,查找文件中包含一个或多个字符的所有单词用户输入。

步骤:(方法)
1)将文本文件的所有单词读入字符串数组
2) 将用户输入字符串获取到 char 数组中
3) 在循环中:检查用户输入的每个字符到每个字符串的每个字符

len = strlen(userInputStr);

for(i=0;i<numWords;i++)  //numWords is number of words in file
{
    len2 = strlen(word[i]);//length of next word in file
    for(j=0;j<len;j++)
    {  
        for(k=0;k<len2;k++)
        {
             //check each char of user input against each char of current word
        }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-27
    • 1970-01-01
    • 2022-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-29
    • 1970-01-01
    相关资源
    最近更新 更多