У меня возникли проблемы с заданием. Я пытаюсь прочитать строки из текстового файла (строка за строкой), разделить значения и вычислить по ним квадратичную 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;
}