Okay, here is the code in C that makes what I want (written in the last message of mine). It combines two wordlist files and makes a third one with writing the combination of each line together.

But in this stage I need the help of some master programmers. This code is unfunctional in files more that 2GB. Can expert programmers show how we should make the necessary changes in the script to make the program work with very huge files? (more than 2GB)

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

int main(int argc, char *argv[])
{
  if (argc < 4)
  {
    printf("Usage: %s input1.txt input2.txt output.txt\n", argv[0]);
    return 1;
  }
  FILE *input_1 = fopen(argv[1], "r");
  if (input_1 == NULL)
  {
    printf("Error opening input file (%s)\n", argv[1]);
    return 1;
  }
  FILE *input_2 = fopen(argv[2], "r");
  if (input_2 == NULL)
  {
    printf("Error opening input file (%s)\n", argv[2]);
    return 1;
  }
  FILE *output = fopen(argv[3], "w");
  if (output == NULL)
  {
    printf("Error opening output file (%s)\n", argv[3]);
    return 1;
  }
  char buffer_1[256];
  char buffer_2[256];

  while (1)
  {
    if (fgets(buffer_1, 256, input_1) != NULL)
    {
      buffer_1[strlen(buffer_1)-1] = '\0';
      rewind(input_2);
      while (1)
      {
        if (fgets(buffer_2, 256, input_2) != NULL)
        {
          fprintf(output, "%s%s", buffer_1, buffer_2);
        }
        else
        {
          break;
        }
      }
    }
    else
    {
      break;
    }
  }

  fclose(input_1);
  fclose(input_2);
  fclose(output);
  return 0;
}It's C code, and it's about as efficient as it gets, holding only the current line in memory, reusing the file descriptor of the second input file by rewinding the read position.

Here's how to run it: