Andaikan struktur fail ialah: 1E1F 0309 luan7 8 zao
2E2F 1518
mulakan
12 39692
12 39712
9 39724
akhir
mulakan
14 39692
8 39724
akhir
luan7 8 zao
qi qi guai guai
mulakan
312 39692
142 39712
95 39724
akhir
Mengandungi berbilang keping data permulaan, tamat
#include #include
utama( ) {
FAIL *sirip;
int a[1000],b[1000],n=0,i;
char one_line[80];
fin=fopen("abc.txt","r");
jika (fin==NULL){printf("fail terbuka errorn");kembali 0;}
Makmal1:semasa(1){
jika ( fgets(satu_baris,80,sirip)==NULL){
printf("Tidak dapat memulakan dana lagi");goto Lab2;}
jika (strncmp(satu_baris,"mulakan",5)==0)pecah;
}
untuk (i=0;i
jika (strncmp(satu_baris,"akhir",3)==0)pecah;
sscanf(one_line,"%d %d",&a[n],&b[n]);
n++;
}
goto Lab1;
Makmal2: fclose(sirip);
printf("Saya baca:n");for (i=0;return 0;
}
fgets membaca setiap baris data dan kemudian menggunakan strchr untuk mencari kedudukan tempat koma bertitik muncul, dan kemudian melakukan penukaran yang sepadan!
Ini adalah contoh yang saya tulis untuk membaca rentetan yang ditentukan Anda boleh merujuk kepada ini dan mengubah suainya kepada fungsi nombor titik terapung
#includeint readstr(const char* str,char p[][128],int plen,int savepos);
int main()
{
char str[]="2012/10/12;123456.0;456123.0";
char date[N][128]={0};
int len=readstr(str,tarikh,N,0);
untuk (int i=0;i
printf("%sn",tarikh[i]);
}
kembali 0;
}
int readstr(const char* str,char p[][128],int plen,int savepos)
{
jika(plen {
printf ("Array terlalu kecil, sila tukar lokasi storan!"
kembali 0;
}
statik int len=0;
char *find=strchr(str,';');
jika(cari==NULL)
{
strcpy(p[savepos],str);
len++;
kembali len;
}
lain
{
strncpy(p[savepos],str,find-str);
len++;
readstr(cari+1,p,N,len);
}
kembali len;
}
Cara membaca baris data seterusnya rentetan yang ditentukan dalam txt menggunakan bahasa C
Yang berikut menganggap bahawa lajur pertama data digunakan sebagai rentetan, dan dibaca menggunakan format sscanf(buf,"%s",....
Begitu juga, gunakan %d untuk integer dan %f %lf untuk mata terapung....
#include
char buf[100];
char col[100][30];
int n=0;
FAIL *fp = fopen("a.txt", "r");
sementara ( fgets(buf, 100, fp) != NULL) {
jika (sscanf(buf,"%s",col[n]) == 1){printf("%sn", col[n] };
}
kembali 0;
}
Jika anda ingin membaca nombor pertama setiap baris, (hanya baca satu digit, gunakan format %1d):
int x[100];
...
sementara ( fgets(buf, 100, fp) != NULL) {
jika (sscanf(buf,"%1d",&x[n]) == 1){ printf("%dn",x[n]);n++;};
Atas ialah kandungan terperinci Cara membaca dua baris data aksara antara permulaan dan akhir dalam dokumen TXT dalam bahasa C. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!