Comment lire un multi-ligne à l'aide de fscanf
Je veux lire mon data.txt fichier qui ressemble à de la et de le stocker dans un tableau appelé buffer[i][j]
1 1 1 1
2 2 2 2
3 3 3 3
4 4 4 4
Je suis en train d'écrire un code qui ressemble à
#include"stdio.h"
#include"stdlib.h"
int main() {
FILE *fp1;
int i,j;
int buffer[4][4]={0};
fp1 = fopen("exact_enumerated_config_442_cub_mc","r");
for(i=0;i<4;i++) {
for(j=0;j<4;j++) {
fscanf(fp1,"%d", &buffer[i][j]);
}
//fscanf(fp1,"\n");
}
fclose(fp1);
for(i=0;i<4;i++) {
for(j=0;j<4;j++) {
printf("%d ",buffer[i][j]);
}
printf("\n");
}
}
mais je reçois la sortie...
1 1 2 1
5 1 6 1
17 1 18 1
21 1 22 1
pourquoi????
- Qu'advient-il si vous remplacez le "lire la section fichier" avec
"%d %d %d %d"
et&buffer[i][j]
avec&buffer[i][0]
,&buffer[i][1]
, etc. - S'il vous plaît, me dire ce qui ne exact_enumerated_config_442_cub_mc signifie?
- il shud vha été data.txt. j'ai oublié de changer le nom du fichier... erreur de ma part.
Vous devez vous connecter pour publier un commentaire.
fopen()
pour s'assurer que le fichier a été ouvert.fscanf()
pour s'assurer qu'il a été un succès et empêcher que les code les variables de traitement qui peuvent ne pas avoir été affecté une valeur (elle renvoie le nombre de missions effectuées)." %d"
.Le code de traiter une seule ligne avec seize
int
s le même que quatre lignes, avec quatreint
s. S'il est important que le format du fichier est de quatreint
s par ligne puis de le lire une seule ligne à l'aide defgets()
et ensuite utilisersscanf()
pour extraire leint
s avec la%n
spécificateur de format pour assurer la pleine tampon a été traitée:Ajouter de l'espace au début de la chaîne de format, il devrait être
" %d"
pour éviter le retour à la ligne problèmesBTW, vous pouvez utiliser le code suivant à la place
Pour obtenir de sortie requis (1111,2222,...) modification:
à:
Précisions: lors de l'utilisation de
fopen
vous devez écrire le nom de fichier que vous souhaitez lire. Dans votre cas, vous devez écriredata.txt
, pasexact_enumerated_config_442_cub_mc
...Il n'existe pas de fichier avec ce nom, d'ailleurs il n'y a aucune données comme 1 1 1 1, 2 2 2 2, 3 3 3 3, 4 4 4 4...
Pour plus détaillées sont exposées visite:
wikibooks.org/wiki/C_Programming/C_Reference/stdio.h/fopen
Ici est votre "modifié" (excédent/déchets/extra
{
}
supprimé etdata.txt
est écrit) code qui vous donne de sortie requis: 1 1 1 1, 2 2 2 2, 3 3 3 3, 4 4 4 4.Il imprime le tableau nommé
buffer
. Cela signifie que......de données a été copié avec succès! de
"data.txt"
àbuffer[4][4]
:P. S.
Si
data.txt
contiendra pasmais
le programme va lire st-1, 2-ème et 3-ème ligne correctement, et la sortie de la 4-ème ligne sera
Il imprime
4
, puis444
, puis0
et0
: les deux derniers éléments sont '0', carbuffer
avait été initialisé par des zéros, si tous les éléments ont changé leurs valeurs, mais les deux derniers sont restés à des zéros.Vous avez dit que vous voulez lire
data.txt
alors pourquoi êtes-vous de l'ouverture du fichierexact_enumerated_config_442_cub_mc
Essayez de changer ce
à