Bääääär
16.05.2009, 17:06
Hallo Ihr!
Ich versuche grade für meine SD-Karte eine Art pseudo-xml zu realisieren. Nach dem Muster
<tagname=wert>
sind da Werte drauf. Allerdings habe ich arge probleme mit den Strings in C. Folgendes funktioniert irgendwie nicht.
// Findet das nächste Zeichen mit dem übergebenen Wert in einer Datei, ansonsten wird 0 zurückgegeben
unsigned long int tpx_find_char(char s) {
unsigned long int count=0;
unsigned long int seek=file.length;
char p;
do {
count++;
p = ffread();
} while (!((--seek<0) || (p==s)));
return count;
}
int tpx_read_tag(char* name, char* value) {
char *s;
int count;
int i=0;
// Wenn keine Datei offen ist, abbrechen
if (!fileopened) {
return 1;
}
// Beginn des tags finden
tpx_find_char('<');
// Zeichen bis zum Ende des Namens (also bis zum '=') zählen
count = (int) tpx_find_char('=') -1;
// zurück setzen
file.seek -= count;
// Daten Einlesen...
s = (char*) malloc(count+1);
for (i=0; i<count; i++) {
s[i] = ffread();
s[i+1] = '\0';
}
// und ausgeben.
strcpy(name, s);
free(s);
// Zeichen bis zum Ende des Tags (also bis zum '>') zählen
count = (int) tpx_find_char('>');
// zurück setzen
file.seek -= count;
// Daten Einlesen...
s = (char*) malloc(count+1);
for (i=0; i<count; i++) {
s[i] = ffread();
s[i+1] = '\0';
}
for (i=0; i<count; i++) {
s[i] = ffread();
}
// und ausgeben.
strcpy(value, s);
free(s);
return 0;
}
tpx_find_char geht ganz gut, aber das einlesen der Zeichen von der SD in einen String funktioniert nicht ansatzweise...
Danke für Hilfe,
Bääääär
Ich versuche grade für meine SD-Karte eine Art pseudo-xml zu realisieren. Nach dem Muster
<tagname=wert>
sind da Werte drauf. Allerdings habe ich arge probleme mit den Strings in C. Folgendes funktioniert irgendwie nicht.
// Findet das nächste Zeichen mit dem übergebenen Wert in einer Datei, ansonsten wird 0 zurückgegeben
unsigned long int tpx_find_char(char s) {
unsigned long int count=0;
unsigned long int seek=file.length;
char p;
do {
count++;
p = ffread();
} while (!((--seek<0) || (p==s)));
return count;
}
int tpx_read_tag(char* name, char* value) {
char *s;
int count;
int i=0;
// Wenn keine Datei offen ist, abbrechen
if (!fileopened) {
return 1;
}
// Beginn des tags finden
tpx_find_char('<');
// Zeichen bis zum Ende des Namens (also bis zum '=') zählen
count = (int) tpx_find_char('=') -1;
// zurück setzen
file.seek -= count;
// Daten Einlesen...
s = (char*) malloc(count+1);
for (i=0; i<count; i++) {
s[i] = ffread();
s[i+1] = '\0';
}
// und ausgeben.
strcpy(name, s);
free(s);
// Zeichen bis zum Ende des Tags (also bis zum '>') zählen
count = (int) tpx_find_char('>');
// zurück setzen
file.seek -= count;
// Daten Einlesen...
s = (char*) malloc(count+1);
for (i=0; i<count; i++) {
s[i] = ffread();
s[i+1] = '\0';
}
for (i=0; i<count; i++) {
s[i] = ffread();
}
// und ausgeben.
strcpy(value, s);
free(s);
return 0;
}
tpx_find_char geht ganz gut, aber das einlesen der Zeichen von der SD in einen String funktioniert nicht ansatzweise...
Danke für Hilfe,
Bääääär