假定檔案結構為:1E1F 0309 luan7 8 zao
2E2F 1518
begin
12 39692
12 39712
9 39724
end
begin
14 39692
8 39724
end
luan7 8 zao
qi qi guai guai
##begin
312 39692
142 39712
95 39724
end
含多段 begin, end 資料
#include #include
#main( ) {
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 error\n");return 0;}
Lab1:while(1){
#if ( fgets(one_line,80,fin)==NULL){
printf("Can not fund begin any more\n");goto Lab2;}
if (strncmp(one_line,"begin",5)==0)break;
}
for (i=0;i
if (strncmp(one_line,"end",3)==0)break;
sscanf(one_line,"%d %d",&a[n],&b[n]);
n ;
}
goto Lab1;
Lab2: fclose(fin);
#printf("I read:\n");for (i=0;ireturn 0;
}
fgets 讀取每一行資料 然後利用 strchr 依序找出 分號 ; 出現的位置 然後做對應的轉換就可以了!
這是我寫的一個讀取指定 字串的一個例子 你參考這改下就好了 字串轉浮點數 函數 atof
#include
#include
#define 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";
char date[N][128]={0};
int len=readstr(str,date,N,0);
for (int i=0;i { printf("%s\n",date[i]); } return 0; } int readstr(const char* str,char p[][128],int plen,int savepos) { if(plen
{ printf("數組過小,請更改儲存位置!"); return 0; } static int len=0; char *find=strchr(str,';'); if(find==NULL) { strcpy(p[savepos],str); len ; return len; } else { strncpy(p[savepos],str,find-str); len ; readstr(find 1,p,N,len); } return len; } 用fgets讀入一行,用sscanf 讀出第一列資料 下面假定第一列資料作為字串,用 sscanf(buf,"%s", 。。。格式讀。 類似,整數用 %d 浮點用 %f %lf .... #include #include 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("%s\n", col[n]); n ; }; } return 0; } 如果要讀每行第一個數,(只讀一位數 用 格式 ): int x[100]; ... while ( fgets(buf, 100, fp) != NULL) { if ( sscanf(buf," ",&x[n]) == 1){ printf("%d\n",x[n]);n ;};C語言如何在txt中讀取指定字串的下一行資料
以上是如何在C語言中讀取TXT文檔中begin和end之間的兩行字元數據的詳細內容。更多資訊請關注PHP中文網其他相關文章!