Я новичок здесь и в программировании в целом (обратите внимание, администраторы и гуру программирования на go легко для меня, спасибо), и я делаю домашнее задание для школы в c о небольшой программе, которая читает CSV-файл в односвязный список, где данные представляют собой структуру, затем отображает их, сортирует и записывает в текстовый файл и т. д. c ..
проблема, с которой я сейчас сталкиваюсь, заключается либо в функция чтения или функция отображения: в результате данные либо читаются, либо отображаются в обратном порядке, а одна строка сдвигается вниз.
Я некоторое время стучал по ней головой, но сейчас у меня заканчивается время, и я подумал спросить его здесь, может быть, чтобы получить какой-то отзыв от свободных sh глаз. В качестве ссылки прилагается скриншот содержимого файла для чтения и вывода программы (очевидно, поскольку я новый пользователь, я не могу загрузить фотографию непосредственно на сайт ..) заранее спасибо
вот соответствующие строки кода:
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <math.h>
#include <conio.h>
#include <string.h>
// DEFINE
#define CSV_FILE_TO_READ "TPP_TP_Data_2019_base.csv"
// ============================
// GLOBAL VARIABLES
struct node
{
char Name[50];
char Firstname[50];
char Initials[10];
char Mobile[30];
char Class[50];
char InitialSort[50]; // change into int
char RandomSort[50]; // change into float
struct node *next;
} *head;
// ============================
// FONCTION PROTOTYPE DECLARATIONS
void Read();
void Display();
// ============================
// MAIN
int main()
{
Read();
Display();
return 0;
}
// ============================
// FUNCTIONS
void Read()
{
FILE *fPointer;
fPointer = fopen(CSV_FILE_TO_READ,"r");
if (fPointer == NULL)
{
printf("\nCould not open file %s",CSV_FILE_TO_READ);
return;
}
//reading the file and creating liked list
char parsedLine[100];
while(fgets(parsedLine, 100, fPointer) != NULL)
{
struct node *node = malloc(sizeof(struct node));
char *getName = strtok(parsedLine, ";");
strcpy(node->Name, getName);
char *getFirstname = strtok(NULL, ";");
strcpy(node->Firstname, getFirstname);
char *getInitials = strtok(NULL, ";");
strcpy(node->Initials, getInitials);
char *getMobile = strtok(NULL, ";");
strcpy(node->Mobile, getMobile);
char *getClass = strtok(NULL, ";");
strcpy(node->Class, getClass);
char *getInitialSort = strtok(NULL, ";"); // change function into int getter
strcpy(node->InitialSort, getInitialSort);
char *getRandomSort = strtok(NULL, ";"); // change function into a float getter
strcpy(node->RandomSort, getRandomSort);
node->next = head;
head = node;
}
fclose(fPointer);
}
void Display() // displays the content of the linked list
{
struct node *temp;
temp=head;
while(temp!=NULL)
{
printf("%s %s %s %s %s %s %s \n",temp->Name,temp->Firstname,temp->Initials,temp->Mobile,temp->Class,temp->InitialSort,temp->RandomSort);
temp = temp->next;
}
printf("\n");
printf("===========================================");
}
вывод программы