Hmm, habs jetzt so versucht aber in den Rückgabewerten steh nur Müll und der Compiler gibt mir bei strcat Warnungen aus, weil ich aus einem unsigned char einen (char*) mache...
Funktionen:Und der Aufruf:Code:// Findet das nächste Zeichen mit dem übergebenen Wert in einer Datei, ansonsten wird -1 zurückgegeben unsigned long int tpx_find_char(char s) { unsigned long int count=-1; 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; // Wenn keine Datei offen ist, abbrechen if (!fileopened) { return 1; } // Beginn des tags finden tpx_find_char('<'); unsigned long int seek=file.length; s = ffread(); seek--; do { strcat(name, (char*) s); s = ffread(); } while ((s=='=') || !(seek--)); s = ffread(); seek--; do { strcat(value, (char*) s); s = ffread(); } while ((s=='>') || !(seek--)); return 0; }Code:int main(void) { char *tag; char *value; lcd_init(); lcd_clear(); sd_init(); lcd_clear(); tag = malloc(30); value = malloc(30); tag[0] = '\0'; value[0] = '\0'; char file[] = "testdat.txt"; fat_str(file); ffopen(file); lcd_clear(); tpx_read_tag(tag, value); lcd_string("T: "); lcd_string(tag); lcd_set_cursor(0,1); lcd_string("V: "); lcd_string(value); _delay_ms(1000); lcd_clear(); tag[0] = '\0'; value[0] = '\0'; tpx_read_tag(tag, value); lcd_string("T: "); lcd_string(tag); lcd_set_cursor(0,1); lcd_string("V: "); lcd_string(value); _delay_ms(1000); ffclose(); return 0; }







Zitieren

Lesezeichen