получить значение, на которое указывает указатель - PullRequest
0 голосов
/ 03 апреля 2020

У меня возникли проблемы с заданием. Я пытаюсь прочитать строки из текстового файла (строка за строкой), разделить значения и вычислить по ним квадратичную c формулу; строки всегда содержат a, b и c. Тем не менее, я столкнулся с проблемой, когда кажется, что когда я прихожу к формуле, значения кажутся позицией указателя, а не назначенным значением. Я не думаю, что finalArrayOfValues должно быть char*, но код не будет компилироваться без него. Есть ли способ получить значение из указателя или я должен попробовать другое решение?

Заранее извиняюсь, если это тривиально (исходя из javascript и python). Я новичок в c Спасибо.

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

int main(void) {
  double a;
  double b;
  double c;
  double d;
  char arrayOfValues[100][128];
  char lines[128];
  char *finalArrayOfValues[3];
  int i = 0;
  double root1, root2;
  FILE *file; /* declare a FILE pointer  */
  file = fopen("QFData1.txt", "r");

  int count = 0;
  while (fgets(lines, 128, file)) {
    strcpy(arrayOfValues[count], lines);
    printf("line %d: %s\n", count, arrayOfValues[count]);
    count++;
  }
  char *string = arrayOfValues[1];
  char *token = strtok(string, ",");
  // loops through the string to extract all other tokens
  for (int n = 0; n < 3; n++) {
    finalArrayOfValues[i] = token;
    printf(" %s\n", token);
    token = strtok(NULL, ",");
    i++;
  }

  printf(" %s\n", finalArrayOfValues[0]);
  printf(" %s\n", finalArrayOfValues[1]);
  printf(" %s\n", finalArrayOfValues[2]);

  a = finalArrayOfValues[0] - "0";
  b = finalArrayOfValues[1] - "0";
  c = finalArrayOfValues[2] - "0";

  printf(" %f\n", a);
  printf(" %f\n", b);
  printf(" %f\n", c);

  d = b * b - (4 * a * c);
  printf(" %f\n", d);

  // real roots
  root1 = (-b + sqrt(d)) / (2 * a);
  root2 = (-b - sqrt(d)) / (2 * a);

  printf("First root = %.2lf\n", root1);
  printf("Second root = %.2lf\n", root2);
  return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...