读取文件并存储到数组中

时间:2014-09-13 15:37:51

标签: c file file-io

我正在尝试读取文件并获取文件内容并将其存储在2个元素数组[0]中:用于内容[1]:用于NULL值。当我想要打印它但我想用作数组时,此代码正常工作:

char ch;
FILE *file;
file = fopen("input.txt","r");

    int allocated_size = 10;
    int used_size = 0;
    char c, *input, *tmp_input;

  // allocate our buffer
  input = (char*)malloc(allocated_size);
  if (input == NULL) {
    printf("Memory allocation error");
    return 1;
  }

  while ((c = fgetc(file)) != EOF){

    // make sure there's an empty one at the end to avoid
    // having to do this check after the loop
    if (used_size == allocated_size-1) {

      allocated_size *= 2;
      tmp_input = (char*)realloc(input, allocated_size);
      if (tmp_input == NULL) {
        free (input);
        printf("Memory allocation error");
        return 1;
      }
      input = tmp_input;
    }

    input[used_size++] = c;
  }

  // we are sure that there's a spot for last one
  // because of if (used_size == allocated_size-1)
  input[used_size] = '\0';

  printf("\nEntered string in the file: %s\n", input);

但是如何像数组一样使用“输入”:

char *input[] = {"This is string value from file!", NULL};

对于这种情况,我可以通过这种方式访问​​文本:input[0]

1 个答案:

答案 0 :(得分:1)

所以为了实现这个目标

    char *input[] = {"This is string value from file!", NULL};

如果我从你的写作中正确理解,那么将输入声明为

    char *input[2];

每次对字符串指针执行任何操作,例如malloc和re-alloc等使用输入[0]。这种方式数组的第一条记录将包含您的文本。

这背后的原因,第一个记录中的字符串意味着你需要一些char指针。