J'ai un programme fictif qui écrit quelques caractères dans un fichier:C - fread ombles de fichier
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;
}
Et un autre programme dans lequel je dois lire ce fichier, voici un 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
Je veux lire les caractères "offset" à partir de la position "posicio". "resposta" est un tableau de 500 caractères.Le temps que vous pouvez voir dans le deuxième programme est parce que je suis désespéré, quand j'exécute le deuxième programme, dans la console apparaît un tas de symboles tels que: xMh dans le dernier printf. J'ai essayé de lire octet à octet dans le temps, mais il ne cesse de m'obtenir ces symboles, je ne sais pas ce que cela peut faire, mon premier soupçon était que j'étais en quelque sorte l'ouverture du fichier en mode binaire, mais Nan!
Ignorer le 1er programme. Mettez du texte brut dans "num.txt" et testez le 2ème programme avec ça. Vérifiez que vous obtenez ce qui est dans le fichier. Cherchez-vous passé la fin du fichier? Vérifiez la valeur de retour de fread(), elle doit être égale à. –
Kingsley
J'ai besoin de la fseek, je ne veux pas commencer à lire depuis le début.Et du texte normal je continue à obtenir les mêmes sorties incorrectes – Asdemuertes
Qu'essayez-vous d'atteindre avec le (j% 27 == 0) - boucle de la lettre je reviens à un moment donné? – Kingsley