Ich habe versucht, einen Code zum Lesen einer CSV-Datei und einen Wert ändern, indem Sie Zeile und Spalte. In der ersten lese ich die Datei, um zu überprüfen, wie viele Zeilen und Spalten dort oben sind, und dann erstelle ich ein dynamisches 2D-Array - jede Zeile ist die Zeile in der Datei. tatsächlich machen Sie die Datei in 2D-Array. und dann werde ich den Wert der gewählten Zeile und Spalte ändern und das ganze Array zurück in die Datei schreiben. weiß jemand, warum es abgestürzt ist? es ist abgestürzt in der ersten Zeile von -Einige Code zum Lesen .csv-Datei abgestürzt
bigArr [i] [j] = (char) ch;
die Funktion:
int changeValue(int line, int col, char str[],const char* path)
{
FILE* csvFile = fopen(path, "r");
char arr[VERY_BIG_MEMORY];
int l = 0, c = 1;
int i = 0,j=0;
int ch = 0;
if (!csvFile)
{
printf("Cant read the file\nPlease open a file\n");
return -1;
}
do
{
ch = fgetc(csvFile);
if (ch == ',')
{
c++;
}
} while (ch !='\n');
fseek(csvFile, 0L, SEEK_SET);
do
{
ch = fgetc(csvFile);
if (ch == '\n')
{
l++;
}
} while (ch!=EOF);
char** bigArr = (char**)calloc(l*c,sizeof(char*));
for (i = 0; i < l*c; i++)
{
bigArr[i] = (char*)calloc(10,sizeof(char));
}
fseek(csvFile, 0L, SEEK_SET);
do
{
ch = fgetc(csvFile);
if (ch == ',')
{
j++;
}
else if (ch == '\n')
{
i++;
}
else
{
bigArr[i][j]=(char)ch;
}
} while (ch != EOF);
}
löschen 'char arr [VERY_BIG_MEMORY];' weil es ungenutzt ist. – BLUEPIXY
'char arr [VERY_BIG_MEMORY]': wahrscheinlich nicht das auf dem Stapel zuweisen! Wie groß ist sehr groß? Könnten Sie Ihren Stapel töten? besser auf dem Heap mit 'malloc()' zuzuteilen oder (einfach BLUPIXYs Kommentar lesen), wie er sagt, entfernen Sie es ... – Jimbo
Haben Sie eine Fehlermeldung, um die Ursache einzugrenzen? – Dawcars