Οδηγός Μελέτης - Εισαγωγή στον Προγραμματισμό

Α18.5 · Ακέραιοι από αρχείο κειμένου με fread

Διάλεξη 18, διαφάνειες 50–51 · Δυσκολία ★★☆ · trace · Κεφάλαια: 18, 12

Το αρχείο input.txt δημιουργήθηκε με echo hello > input.txt. Εξηγήστε την έξοδο του προγράμματος («What?!»).

#include <stdio.h>
int main() {
  FILE *fileToRead, *fileToWrite;
  fileToRead = fopen("input.txt", "r");
  if (!fileToRead) return 1;
  int buffer[1024];
  size_t integersRead = fread(buffer, sizeof(int), 1023, fileToRead);
  printf("# of integers read: %d\n", integersRead);
  printf("Integer read: %d %08x\n", buffer[0], buffer[0]);
  fclose(fileToRead);
  return 0;
}
$ ./freadint
# of integers read: 1
Integer read: 1819043176 6c6c6568
$ hexdump -C input.txt
00000000  68 65 6c 6c 6f 0a  |hello.|

Υπόδειξη

Η fread αντιγράφει bytes χωρίς καμία μετατροπή και μετρά μόνο ολόκληρα δεδομένα μεγέθους sizeof(int). Συγκρίνετε τα bytes του hexdump με το δεκαεξαδικό που τυπώθηκε και θυμηθείτε το endianness.

Αριθμός στον οδηγό: Α18.5 (στο κεφάλαιο) · Μόνιμο αναγνωριστικό: slides-lec18-fread-int · Σύνδεσμος: https://progintro.github.io/study/questions/slides/slides-lec18-fread-int.html · Markdown (GitHub)