Ich habe ein Dummy-Programm, das einige Zeichen in einer Datei schreibt:C - fread Saibling aus Datei
int main (int argc, char **argv)
{
char i = '0';
int j = 0;
FILE * fp = NULL;
fp = fopen("num.txt","w+");
if(!fp){
printf("fopen failed\n");
return -1;
}
fseek(fp, SEEK_SET, 0);
while(1){
if (j >500) {
fclose(fp);
return 0;
}
usleep(5000);
fwrite(&i,sizeof(char),1,fp);
if (j%27 ==0) {
i ='0';
}
i++;
j++;
}
fclose(fp);
return 0;
}
Und ein anderes Programm, in dem ich aus dieser Datei lesen muß, ist hier ein Fragment:
if ((num = fopen("num.txt", "r+")) == NULL){
perror("Error al obrir l'arxiu");
}
fseek(num, posicio, SEEK_SET);
fread(resposta, sizeof(char), offset, fp);
while(contador <500){
printf("%c",resposta[contador]);
contador++;
}
printf(" la resposta contiene %s \n",resposta);A
Ich möchte "Offset" Zeichen von der Position "Posicio" lesen. "Resposta" ist ein Array von 500 Zeichen. Während Sie im zweiten Programm sehen können, weil ich verzweifelt bin, wenn ich das zweite Programm ausführen, in der Konsole erscheint eine Reihe von Symbolen wie: xMh in der letzten drucken
Ich habe versucht, Byte zu Byte in der Weile zu lesen, aber es bringt mir diese Symbole, ich weiß nicht, was das tun könnte, mein erster Verdacht war, dass ich irgendwie die Datei im Binärmodus öffnete, aber Nee!
Ignorieren des 1. Programms. Schreiben Sie einen einfachen Text in "num.txt" und testen Sie das 2. Programm damit. Stellen Sie sicher, dass Sie wissen, was in der Datei enthalten ist. Suchst du nach dem Ende der Datei? Überprüfen Sie den Rückgabewert von fread(). Er sollte entsprechen. –
Kingsley
Ich brauche den fseek, ich möchte nicht von Anfang an zu lesen beginnen. Und vom normalen Text bekomme ich immer die gleichen falschen Ausgaben – Asdemuertes
Was versuchen Sie mit dem (j% 27 == 0) - Schleifen des Briefes zu erreichen ich zurück zu einem gewissen Punkt? – Kingsley