Ich versuche, eine Datei test.txt über fscanf zu lesen und in einem Array von struct zu speichern. Ich habe den Code gepostet, den ich ausprobiert habe. Sieht aus wie ein Problem hier ist mit LadefunktionC Programmierung: Lesen von Datei und Drucken auf dem Bildschirm
Dies ist, was ich in test.txt haben:
205,11.20,John Snow
336,23.40,Winter is coming
220,34.20,You know nothing
Ladefunktion verwendet loadinput Funktion Test.txt-Datei in den „item“ Array zu lesen und setzt das Ziel der "NoPtr" auf die Anzahl der Elemente aus der Datei gelesen (in diesem Fall sollte 3 sein).
Nach dem Lesen der Datei, ich versuche auch, es auf dem Bildschirm zu drucken, aber es wird nicht funktionieren. Nichts wird überhaupt angezeigt.
Dieses Programm wird kompiliert. Was mache ich hier falsch?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct Item {
double value;
int unit;
char name[50];
};
int load(struct Item* item, char Name[], int* NoPtr);
int loadinput(struct Item* item, FILE* data);
void display(struct Item item, int variableA);
int main(void)
{
struct Item FIN[3];
int i, n;
load(FIN, "test.txt", &n);
for (i = 0; i < n; i++)
{
display(FIN[i],0);
}
return 0;
}
int load(struct Item* item, char Name[], int* NoPtr)
{
struct Item ARR[3];
int flagcheck;
FILE* fl;
fl = fopen("Name[]", "r");
while (fl)
{
flagcheck = loadinput(&ARR, fl);
if (flagcheck < 0)
{
fclose(fl);
break;
}
else
{
*NoPtr++;
}
fclose(fl);
}
return 0;
}
int loadinput(struct Item* item, FILE* data)
{
int ret = fscanf(data, "%d,%lf,", &item->unit, &item->value);
if (ret != 2) {
return -1;
}
fgets(item->name, sizeof item->name, data);
item->name[strlen(item->name)-1] = '\0';
return 0;
}
void display(struct Item item, int variableA)
{
printf("|%3d |%12.2lf| %20s |***\n", item.unit, item.value, item.name);
return;
}
'fopen ("Name []", "r");' und dann einfach davon ausgehen, es ohne Fehler gearbeitet Überprüfung? 'Name []' ist ein ziemlich seltsamer Dateiname ... – John3136
meinst du 'fopen (Name," r ");'? – bansi
'item-> name [strlen (item-> name) -1]' Beende eine Zeichenkette mit 'strlen' in der Zeichenkette, die du terminieren willst? – John3136