PfN 2019

Fragebogen

Fragebogen


N. W.
Diese Lernkarten decken grundlegende Funktionen und Techniken der Dateiverarbeitung in der Informatik auf Universitätsniveau ab. Sie behandeln Themen wie das Berechnen der Zeichenkettenlänge, die Verteilung von Zeichen in Dateien und das Umkehren von Zeilen. Die Karteikarten sind besonders nützlich für Studierende, die praktische Übungen in der Programmierung und Dateiverarbeitung benötigen, um ihre Fähigkeiten in der Handhabung von Dateien und Zeichenketten zu verbessern.
Cartes-fiches
6
Utilisateurs
0
Langue
Allemand
Catégorie
Informatique
Niveau
Université
Créé / Mis à jour
08.04.2015 / 05.09.2019

Cartes-fiches

ToDo: void reverse_lines(FILE *fpin)

How:
- fpin zeigt auf bereits geöffnete Datei
- zeilenweise mit fgets lesen
  char *fgets(cher *str, int size, FILE *stream);
- nach stdout ausgeben
- begrenzte Zeilenlänge: 1024 Zeichen
- nutze Fkt. void reverse_string(char *str, size_t len)
  angenommen sie sei gegeben.

void reverse_lines(FILE *fpin)
{
 assert(fpin != NULL);
 char *s=malloc(sizeof(*s)*1024);
 assert(s != NULL);
 while(fgets(s, 1024, fpin) != NULL)
 {
  reverse_string(s, strlen(s)-1);
  printf("%s",s);
 }
 free(s);
}

void reverse_lines(FILE *fpin)
{
 (1)
 (2)
 {
  (3)
 }
 free(s);
}

ToDo: unsigned long *char_dist(const char *filename)

How:
- öffne Datei
- zeilenweise lesen
- Ergebnis (Verteilung) in Array speichern
  begrenzte Größe: max. Wert, der vom Typ unsigned char gespeichert werden kann

unsigned long *char_dist(const char *filename)
{
 assert(filename != NULL);
 FILE fp = fopen(filename, "r");
 assert(fp != NULL);
 unsigned long *dist= calloc(UCHAR_MAX+1, sizeof(*dist);
 assert(dist != NULL);
 int c;
 fseek(fp, 0, SEEK_SET);
 while(c= fgetc(fp) != EOF) { dist[c]+=1;}
 fclose(fp);
 return dist;
}

unsigned long *char_dist(const char *filename)
{
 (1)
 (2)
 assert(dist != NULL);
 int c;
 fseek(fp, 0, SEEK_SET);
 (3)
 fclose(fp);
 return dist;
}

ToDo: size_t strlen_ptr(const char *s)

How:
- kein indexbasierter Zugriff!

size_t strlen_ptr(const char *s)
{
 const char *s_ptr = s;
 while(s_ptr =! '\0') { s_ptr++;}
 return s_ptr - s;
}

size_t strlen_ptr(const char *s)
{
 (1)
 (2)
 (3)
}