Maison > Article > Tutoriel logiciel > Comment lire les deux lignes de données de caractères entre le début et la fin dans un document TXT en langage C
Supposons que la structure du fichier soit : 1E1F 0309 luan7 8 zao
2E2F 1518
commencer
12 39692
12 39712
9 39724
fin
commencer
14 39692
8 39724
fin
luan7 8 zao
qi qi guai guai
commencer
312 39692
142 39712
95 39724
fin
Contient plusieurs éléments de données de début et de fin
#include #include
principale( ) {
FILE *fin;
int a[1000],b[1000],n=0,i;
char one_line[80];
fin=fopen("abc.txt","r");
if (fin==NULL){printf("open file errorn");return 0;}
Lab1 : pendant que (1) {
if ( fgets(one_line,80,fin)==NULL){
printf("Le financement ne peut plus commencer");goto Lab2;}
if (strncmp(one_line,"begin",5)==0)break;
}
pour (i=0;i
if (strncmp(one_line,"end",3)==0)break;
sscanf(one_line,"%d %d",&a[n],&b[n]);
n++;
}
aller au Lab1;
Lab2 : fclose(fin);
printf("J'ai lu:n");for (i=0;ireturn 0;
}
fgets lit chaque ligne de données puis utilise strchr pour trouver la position où le point-virgule apparaît, puis effectue la conversion correspondante !
C'est un exemple que j'ai écrit pour lire une chaîne spécifiée. Référez-vous simplement à ceci et modifiez-la La fonction de chaîne en nombre à virgule flottante atof
.#inclure
#inclure
#définir N°10
int readstr(const char* str,char p[][128],int plen,int savepos);
int main()
{
char str[]="2012/10/12;123456.0;456123.0";
date de caractère[N][128]={0};
int len=readstr(str,date,N,0);
pour (int i=0;i { printf("%sn",date[i]); } retour 0; } int readstr(const char* str,char p[][128],int plen,int savepos) { if(plen
{ printf ("Le tableau est trop petit, veuillez changer l'emplacement de stockage!" retour 0; } static int len=0; char *find=strchr(str,';'); if(find==NULL) { strcpy(p[savepos],str); len++; retour len; } autre { strncpy(p[savepos],str,find-str); len++; readstr(find+1,p,N,len); } retour len; } Utilisez fgets pour lire une ligne et sscanf pour lire la première colonne de données Ce qui suit suppose que la première colonne de données est utilisée comme chaîne et est lue en utilisant le format sscanf(buf,"%s",.... De même, utilisez %d pour les entiers et %f %lf pour les virgules flottantes.... #inclure #inclure main(){ char buf[100]; char col[100][30]; int n=0; FILE *fp = fopen("a.txt", "r"); while ( fgets(buf, 100, fp) != NULL) { if (sscanf(buf,"%s",col[n]) == 1){printf("%sn", col[n] }; } retour 0; } Si vous souhaitez lire le premier numéro de chaque ligne, (lire un seul chiffre, utilisez le format %1d) : int x[100]; ... while ( fgets(buf, 100, fp) != NULL) { if (sscanf(buf,"%1d",&x[n]) == 1){ printf("%dn",x[n]);n++;};Comment lire la ligne de données suivante d'une chaîne spécifiée en txt en utilisant le langage C
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!