Как прочитать в строке ввода от пользователя и выделить его? - PullRequest
0 голосов
/ 30 ноября 2018

Так что я уже некоторое время работаю над этим кодом и не могу понять, почему он не работает.По сути, я предполагаю создать программу, использующую функции для чтения в строке ввода от пользователя, который является именем файла «data.txt».Мне нужна функция, чтобы определить количество строк в файле, чтобы выделить массив символьных указателей.Тогда моя программа должна распечатать строки, прочитанные из файла.Наконец программа должна освободить выделенную память.

Это мой нерабочий код.

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

#define MAX_WIDTH 144

void getFileName(char* array1);
int getLineCount(FILE* data, int max);
char** createArryOfPtrs(int rows);
int main(void) 
{
  int max = 0;
  int rows;
  char array1[MAX_WIDTH];
  FILE* data = fopen(array1, "r");
  getFileName(array1);
  getLineCount(data, max);
  createArryOfPtrs(rows);


  fclose(data);
  return 0;
}

void getFileName(char* array1)
{
  printf("Enter filename: ");
  fscanf(stdin, "%144[^\t]", array1);

}

int getLineCount(FILE* data, int max)
{
  int i = 4;
  char *array1[MAX_WIDTH];
  if(data != NULL)
  {
    while(fgets(*array1, MAX_WIDTH, data) != NULL)
    {
      i+=1;
    }
  }


return i;
}

char** createArryOfPtrs(int rows)
{
  int r = 4, c = 9, i, j, count;
  char *array1[r];
  for(i =0; i < r; i++)
  {
    array1[i] = (char*)malloc(c * sizeof(char));
  }
  count = 0;
  for(i = 0; i < r; i++)
  {
    for(j = 0; j < c; j++)
    {
      array1[i][j] = ++count;
    }
  }

  for(i = 0; i < r; i++)
  {
    for(j = 0; j < c; j++)
    {
      printf("%c", array1[i][j]);
    }
  }

  return 0;
}

Это текстовый файл.

larry snedden 123 mocking bird lane
sponge bob 321 bikini bottom beach
mary fleece 978 pasture road
hairy whodunit 456 get out of here now lane

Явсе еще новичок в C, поэтому я очень смущен.Цени любую помощь, которую я могу получить.

1 Ответ

0 голосов
/ 30 ноября 2018

Заказ имеет значение!Вы получаете имя файла для открытия после , который вы называете fopen.Это означает, что данные в array1 будут неинициализированными и неопределенными (и кажутся случайными).

Вам необходимо прочитать имя файла first .

Эта проблема должна была быть очень ясной, если вы выполнили небольшую отладку резиновой утки .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...