Я пытаюсь написать простую C программу, которая будет считывать данные из файла CSV и выполнять некоторые вычисления на этих данных.
К сожалению, у меня проблема с указателем моего файла, fptr
, после вызова fopen()
не присваивается значение. Я знаю, что это тот случай, когда я прошел отладчик VS 2017 года. И все же я не знаю, почему это так. Это огромная проблема и означает, что моя программа будет выдавать некоторые очень неприятные исключения каждый раз, когда я пытаюсь прочитать данные из файла или закрыть файл.
Мой код ниже:
main. c
#include<stdio.h>
#include <stdlib.h> // For exit() function
#include"constants.h" //For access to all project constants
/***************************************************************************************************************
To keep the terminal from automatically closing
Only useful for debugging/testing purposes
***************************************************************************************************************/
void preventTerminalClosure() {
//flushes the standard input
//(clears the input buffer)
while ((getchar()) != '\n');
printf("\n\nPress the ENTER key to close the terminal...\n");
getchar();
}
/***************************************************************************************************************
Read the given input file
***************************************************************************************************************/
void readInputFile(char fileName[]) {
FILE *fptr;
char output[255];
//open the file
if (fptr = fopen(fileName, "r") != NULL) { //read file if file exists
//fscanf(fptr, "%[^\n]", output);
//printf("Data from the file:\n%s", output);
printf("<--Here-->");
}else {
printf("\nERROR 1: File %s not found\n", fileName);
preventTerminalClosure();
exit(1);
}
fclose(fptr); //close the file
}
/***************************************************************************************************************
* * * Main * * *
***************************************************************************************************************/
void main() {
char testName[MAX_NAME_SIZE];
printf("Hello World!\n");
printf("Please enter your name: ");
scanf("%s", testName);
printf("It's nice to meet you %s!", testName);
readInputFile("dummy.txt");
preventTerminalClosure(); //Debug only
}
Я убедился, что мой фальшивый файл действительно существует и находится в правильном месте. В противном случае мой код попадет в блок else
внутри readInputFile()
. Это то, что я тщательно проверил.
Я явно упускаю кое-что из базового c, которое объясняет поведение указателя; но что это такое, я не уверен. Любая помощь будет оценена! :)