Если вам просто нужно прочитать из файла, вы можете просто использовать fscanf()
вместо чтения из файла в массив символов и затем использовать sscanf()
для этой строки.
И вам не нужноявно введите cast, возвращаемое значение calloc()
.См. , нужно ли приводить malloc и calloc .
Вы делаете
if(fptr==NULL)
{return 0;}
после , который вы пытались прочитатьиз файла.Если файл не может быть открыт, программа завершится сбоем задолго до того, как элемент управления достигнет этого оператора if
.
Установите эту проверку сразу после открытия файла, например
FILE *fptr = fopen("file", "r");
if(fptr==NULL)
{
return EXIT_FAILURE;
}
и верните значение0
обычно означает успех.Поскольку входной файл не найден, является ошибкой, попробуйте вместо этого вернуть EXIT_FAILURE
.
И в последнем %[^,]" in the format string of sscanf function in your program, there is no comma for the last entry of each line in the input file. So change it to read till the last
"` найдено.
Кроме того, в концев строке формата, есть пробел, за которым следует \n
. \n
здесь избыточен, так как пробел будет соответствовать " Один символ пробела в строке формата соответствует любой комбинации символов пробела во входных данных "
Таким образом, конечная строка формата может быть
"\"%[^,],%[^,],%[^,],%[^,],%[^\"]\" "
И не забудьте закрыть файлы, которые вы открыли, и освободить память, выделенную до концапрограммы типа
free(c); //for the Card pointer
fclose(fptr);