首页 > 解决方案 > 获取指针指向的值

问题描述

我在做作业时遇到了一些麻烦。我正在尝试从 txt 文件中读取行(逐行)拆分值并从中计算二次公式;这些行总是包含 a、b 和 c。但是,我遇到了一个问题,当我使用公式时,值似乎是指针位置而不是分配的值。我不认为finalArrayOfValues应该是 achar*但没有它代码将无法编译。有什么方法可以从指针中检索值,还是我应该尝试不同的解决方案?

如果这是微不足道的(来自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;
}

标签: cpointers

解决方案


推荐阅读