Programmation en C : Fin de fichier - opération
Je suis en train de vérifier en finit pas de fichier dans la programmation en c.
Quelqu'un peut s'il vous plaît aider, je ne suis pas en mesure de comprendre ce que je fais de mal dans le code suivant.
Il imprime le dernier ensemble de lignes à deux reprises.
/* Reads the Input file. */
fp = fopen("matrix_p2.txt","r");
if(fp == NULL)
{
printf("*** ERROR: Could not open file matrix_p2.txt\n");
}
p = 2;
while(!feof(fp))
{
printf("n= %d, m= %d", n,m);
for(i = n; i < N/p; i++)
for(j = m; j < M; j++)
fscanf(fp, "%d",&(A[i][j]));
print_blk(A, n, m, N/p, M);
//n = n + N/p;
size[0] = N;
size[1] = M;
}
fclose(fp);
D'ENTRÉE:
1 2 3 4
2 3 4 5
3 4 5 6
4 5 6 7
De SORTIE:
1 2 3 4
2 3 4 53 4 5 6
4 5 6 73 4 5 6
4 5 6 7
Mais je veux de sortie comme suit:
SORTIE
1 2 3 4
2 3 4 53 4 5 6
4 5 6 7
- Ce sont 'taille' 'A', 'n', 'N', 'm', défini comme?
Vous devez vous connecter pour publier un commentaire.
C'est tout simplement la façon dont
feof
œuvres; elle ne vous dit pas si vous êtes sur de frapper de fin de fichier, il vous indique si vous ont hit de fin de fichier. (Ce qui est: elle ne vous dit pas quand vous avez lu le dernier caractère; il vous dit quand vous avez lu passé le dernier caractère). La solution la plus simple est de changer cette:à ceci:
et ce:
à ceci:
de sorte que vous test de fin de fichier après vous avez pu le lire dans le tableau (ou ne l'ont pas) et avant vous faire quelque chose avec elle.
(Ce serait encore mieux, mais, de fait examiner le rendement de la valeur de
fscanf
et traiter toutes les conditions d'erreur comme fin-de-fichier.)fscanf
et laprint_blk
.