017
18.04.2004, 18:48 Uhr
(un)wissender
Niveauwart
|
Ein Beispiel, wie man ein einen Namen unbekannter Länge speichern kann. Und ja, es sind gotos und die passen hier gut hin, c ist nun mal eine Krankheit .
| C++: |
#include <stdlib.h> #include <stdio.h> #include <string.h>
struct testStruct { char *name; } TEST;
int main(int argc, char * args[]) { char * filename, nameToSave; int length; FILE *myFile; if(argc < 3) { printf("Bitte Dateiname und Namen zum speichern angeben"); return 0; } filename = args[1]; if((myFile = fopen(filename, "w+b")) == NULL) { printf("Error beim dateioeffnen: %s!", filename); return 0; } length = strlen(args[2]) + 1; TEST.name = (char *)malloc(length * sizeof(char)); strcpy(TEST.name, args[2]); if(fwrite(&length, sizeof(int), 1, myFile) < 1) { printf("Error beim schreiben der Stringlaege: %d!", length); goto exit; } if(fputs(TEST.name, myFile) == EOF) { printf("Error beim schreiben des Strings: %s!", TEST.name); goto exit; } printf("Geschrieben wurde %s mit eine Laenge von %d.\n", TEST.name, length - 1); if(fseek(myFile, 0, SEEK_SET) != 0) { printf("Fehler beim zuruecksetzen des Dateizeigers!"); goto exit; } if(fread(&length, sizeof(int), 1, myFile) < 1) { printf("Error beim lesen der Stringlaege: %d!", length); goto exit; } if(fgets(TEST.name, length, myFile) == NULL) { printf("Error beim lesen des Strings!"); goto exit; } printf("Aus der Datei %s gelesen: %s.\n", filename, TEST.name); exit: fclose(myFile); free(TEST.name); return 0; }
|
-- Wer früher stirbt ist länger tot. Dieser Post wurde am 18.04.2004 um 18:49 Uhr von (un)wissender editiert. |