 |
|
 |
 |
|
Lösungen zu den Aufgaben von Kapitel 19
|
Ein möglicher Lösungsweg:
#include <stdio.h>
#include <stdio.h>
#include <stdlib.h>
char *fgetstr(char *name)
{
char *str, *temp;
size_t len;
/* Datei name öffnen */
FILE* file = fopen(name,"r+");
if(file == NULL)
{
printf("Fehler bei fopen()...\n");
exit(0);
}
/* Länge der Datei in Bytes ermitteln */
fseek(file, 0L, SEEK_END);
len = ftell(file);
fseek(file, 0L, SEEK_SET);
/* Speicher für den String reservieren */
str = (char*)malloc(sizeof(char)*len);
if(str == NULL)
{
fprintf(stderr, "...Speicherplatzmangel...\n");
exit(0);
}
temp = str;
/* Jetzt Zeichenweise einlesen bis EOF */
while((*temp=fgetc(file))!=EOF)
temp++;
*temp = '\0';
fclose(file);
return str;
}
int main(void)
{
char *string = fgetstr("test.txt");
printf("%s\n", string);
return 0;
}
Ein weiterer Lösungsvorschlag:
#include <stdio.h>
#include <stdio.h>
#include <stdlib.h>
char *fgetstr(char *name)
{
char *str, *temp;
size_t len;
/* Datei name öffnen */
FILE* file = fopen(name,"r+");
if(file == NULL)
{
printf("Fehler bei fopen()...\n");
exit(0);
}
/* Länge der Datei in Bytes ermitteln */
fseek(file, 0L, SEEK_END);
len = ftell(file);
fseek(file, 0L, SEEK_SET);
/* Speicher für den String reservieren */
str = (char*)malloc(sizeof(char)*len);
if(str == NULL)
{
fprintf(stderr, "...Speicherplatzmangel...\n");
exit(0);
}
temp = str;
/* Jetzt Zeichenweise einlesen bis EOF */
while((*temp=fgetc(file))!=EOF)
temp++;
*temp = '\0';
fclose(file);
return str;
}
void fputstr(char* str, char *name)
{
char ch;
int i=0;
/* Eine Datei zum schreiben öffnen */
FILE* file = fopen(name,"w");
if(file == NULL)
{
printf("Fehler bei fopen()...\n");
exit(0);
}
/* Jetzt Zeichenweise den String in die Datei schreiben */
while((ch = *str) != '\0')
{
fputc(ch,file);
str++;
}
fclose(file);
}
int main(void)
{
char *string;
/* Wir schreiben einen String in eine Datei */
fputstr("Ein Teststring für die Datei", "test.txt");
/* Wir lesen den String wieder aus der Datei aus */
string = fgetstr("test.txt");
printf("%s\n", string);
return 0;
}
|
|
 |
 |
 |