在另一个函数C中调用函数的值

时间:2018-01-14 18:11:48

标签: c algorithm brute-force

我试图用C语言实现我自己的算法,但是我无法弄清楚我在某一点面对的是什么。这是代码:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define CHUNK 1024


void combinations(char nums[],char candidate[],int current_len,int n3,int len) {

  if(current_len == len) {
      printf("%s\n", candidate);
      return;
  }

  else {
      int i;
      for(i=0; i < n3; i++) {
          candidate[current_len] = nums[i];
          combinations(nums,candidate,current_len+1,n3,len);
        }
  }

 }

int main() {

    // ---- Reading the data from ASCII text ----
    int match[32];
    int length;
    char buf[CHUNK];
    FILE *file;
    size_t nread;
    file = fopen("data.txt", "r");
    if(file) {
      while((nread = fread(buf,1,sizeof buf, file)) > 0) {
        fwrite(buf,1,nread,stdout);
        match[32] = nread;
        length = nread-1;
        printf("\n%d\n", length);
      }

      fclose(file);
    }

    // -------------------------------------------

    char lc_letters[] =   {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v'};
    char up_letters[] = {'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V'};
    char nums[] = {'0','1','2','3','4','5','6','7','8','9'};
    char candidate[32];
    char output[32];
    int n = sizeof(lc_letters)/sizeof(lc_letters[0]);
    int n2 = sizeof(up_letters)/sizeof(up_letters[0]);
    int n3 = sizeof(nums)/sizeof(nums[0]);
    int count = length;
    char arr[10] = "";
    char new_str[21];

    combinations(nums,arr,0,n3,count);
}

现在让我解释一下:我试图做的是从文件中读取文本数据(在这里确定,它有效),然后执行所有可能的单词或数字组合。在这种情况下,我只是创建了数字的组合,以便查看它是否适用于一个案例然后与其他案例一样继续,但它不是那样的。我可以使用名为&#34;组合&#34;的void函数创建我的组合。但问题出现了:

  • 现在我有数据文本和创建的组合,我无法弄清楚如何将数据文本与创建的每个组合进行比较并打印&#34; YES&#34;如果它匹配或&#34;否&#34;如果它没有。

例如:此代码读取的数据文本为&#34; 12&#34;,因此文本的长度为2.然后程序将创建0到9的所有数字组合,长度为2,因此从00开始至99岁。

现在,有人可以帮助我吗?我知道这不是实现此算法的最佳方式之一,但它是我自己的想法,我不想复制另一个人的想法。

0 个答案:

没有答案