Ich versuche zu finden, wie sich der Dateizeiger beim Durchlaufen der Datei bewegt. Zu diesem Zweck habe ich dieses Stück Code geschrieben -Datei Pointer Positionen in einer Textdatei in C
#include<stdio.h>
#include<conio.h>
void main()
{
FILE *fp;
fp=fopen("example.txt","w+");
fputs("This is a test",fp);
printf("The initial text - \n");
int x=0; // For the purpose of debugging
rewind(fp);
while(!feof(fp))
{
char ch=getc(fp);
printf("File pointer - %d and letter - ",ftell(fp));
if(ch=='\t')
puts("tab");
else
if(ch=='newline')
puts("\n");
else
putchar(ch);
printf("\n");
}
fputs("\nThis is the second line",fp);
printf("\n\nThe final text - \n");
rewind(fp);
while(!feof(fp))
{
char ch=getc(fp);
printf("File pointer - %d and letter - ",ftell(fp));
if(ch=='\t')
puts("tab");
else
if(ch=='\n')
puts("newline");
else
putchar(ch);
printf("\n");
}
}
Nun wird die O/P hierfür ist verständlich, mit Ausnahme von 3 Plätzen -
Wenn die erste Zeile eingegeben wird, warum ist der Zeigerwert für die 14. Position zweimal vorhanden? Soll die Datei nicht beim ersten Auftreten des EOF - 14 enden?
Warum passiert das?Nachdem die zweite Zeile eingegeben wurde, warum fehlt die 15. Position des Zeigers?
Warum ist nach dem 16. Zeichen eine Zeile leer? Sollte nicht das 17. Zeichen in der nächsten Zeile ohne Leerzeile vorkommen?
Ihr Compiler sollte Warnungen ausspucken, ignorieren Sie sie nicht. – Unimportant
Möglicherweise verwandt: ['Warum ist "while (! Feof (Datei))" immer falsch?'] (Http: // stackoverflow.com/questions/5431941/why-is-while-feof-Datei-immer-falsch) – molbdnilo
Nur als freundliche Erinnerung: 'int fgets (FILE * stream)' <= Es gibt einen Grund für die "Int", hier. – dhke