線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2000
推到 Plurk!
推到 Facebook!

請問一個讀檔的問題

答題得分者是:暗黑破壞神
starhua628
一般會員


發表:16
回覆:9
積分:5
註冊:2005-03-19

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-09-04 11:28:56 IP:220.135.xxx.xxx 未訂閱
請求各位幫忙,這是一個關於讀檔的程式,所讀的檔案為TXT檔。 其中TXT檔每筆資料格式為 "整數"  "英文字串"  "整數"  "中文字串" 請問我在執行到資料的一半時會跳出來,並且停在people1[i] = d;這一行, 但所存的一半資料皆正確,另外原TXT檔的內容格式也皆正確, 還請各位幫忙看一下我的程式哪邊出了問題,看了大半天依舊想不出來答案了,多謝各位了^_^    
//程式開頭宣告
#include 
#pragma hdrstop
#include 
#include 
#include "Unit1.h"    int *d_data1,*money1;
char *i_num1[10],*people1[14];
int *d_data2,*money2;
char *i_num2[10],*people2[14];    //程式開始
  FILE *fp1,*in1;
  int a,c;
  char b[10],d[14];
  int i=0,size=0;      in1=fopen("D:\\qqq.txt","w");
  if(OpenDialog1->Execute())
  {
   if(( fp1=fopen(OpenDialog1->FileName.c_str(), "r"))==NULL)
   {
     ShowMessage( "OPen File Error");
   }       while (!feof(fp1))
   {
    fscanf( fp1,"%d\t""%s\t""%d\t""%s\t""\n",&a,b,&c,d);
    size  ;       //計算TXT檔有多少筆資料
   }
   fclose(fp1);
  }      fp1=fopen(OpenDialog1->FileName.c_str(), "r");
  d_data1 = new int[size];    //動態矩陣建立
  *i_num1 = new char[size];
  money1 = new int[size];
  *people1 = new char[size];      while (!feof(fp1))
  {
    fscanf( fp1,"%d\t""%s\t""%d\t""%s\t""\n",&a,b,&c,d);
    d_data1[i] = a;    //從TXT檔讀到的資料存到矩陣中
    i_num1[i] = b;
    money1[i] = c;
    people1[i] = d;   //--------程式停止點        fprintf(in1,"%d\t""%s\t""%d\t""%s\t""\n",d_data1[i],i_num1[i],money1[i],people1[i]);    //把矩陣的資料存成另一個TXT檔        i  ;
  }
   fclose(fp1);
暗黑破壞神
版主


發表:9
回覆:2301
積分:1627
註冊:2004-10-04

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-09-04 11:47:09 IP:59.104.xxx.xxx 未訂閱
改用 fgets 而不要用 fscanf?
starhua628
一般會員


發表:16
回覆:9
積分:5
註冊:2005-03-19

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-09-04 18:25:49 IP:220.135.xxx.xxx 未訂閱
版主你好,請問一下fgets()的用法為fgets(鎮列名稱,字串長度,File指標),那如果TXT檔的內容為 "整數" "英文字串" "整數" "中文字串",應該怎麼把四種資料型態存到四個型態的矩陣中呢,還請賜教
暗黑破壞神
版主


發表:9
回覆:2301
積分:1627
註冊:2004-10-04

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-09-04 19:38:12 IP:59.104.xxx.xxx 未訂閱
引言: 版主你好,請問一下fgets()的用法為fgets(鎮列名稱,字串長度,File指標),那如果TXT檔的內容為 "整數" "英文字串" "整數" "中文字串",應該怎麼把四種資料型態存到四個型態的矩陣中呢,還請賜教 < face="Verdana, Arial, Helvetica"> 1.TXT 怎麼會有”整數”這個東西勒? 2.如果你說的是 04name06陳阿扁 這樣的話。為什麼會讀不出呢?
starhua628
一般會員


發表:16
回覆:9
積分:5
註冊:2005-03-19

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-09-04 20:43:26 IP:220.135.xxx.xxx 未訂閱
對的!版主,TXT檔裡面的內容就像 2 AAA 456 王小名 其中四個資料型態都有空白作區隔,若是使用fgets()應該是存取一整列當作一字串,但是我想要把其中的"2" "AAA" "456" "王小名" 分別用鎮列下去存取, 請問我該如何寫呢...還請版主教我一下了...多謝了^^
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-09-04 21:21:00 IP:211.22.xxx.xxx 未訂閱
引言: 對的!版主,TXT檔裡面的內容就像 2 AAA 456 王小名 其中四個資料型態都有空白作區隔,若是使用fgets()應該是存取一整列當作一字串,但是我想要把其中的"2" "AAA" "456" "王小名" 分別用鎮列下去存取, 請問我該如何寫呢...還請版主教我一下了...多謝了^^
插個花~ 用字元指標存取或者查一下庫存函數:
暗黑破壞神
版主


發表:9
回覆:2301
積分:1627
註冊:2004-10-04

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-09-04 21:28:08 IP:59.104.xxx.xxx 未訂閱
引言: 對的!版主,TXT檔裡面的內容就像 2 AAA 456 王小名 其中四個資料型態都有空白作區隔,若是使用fgets()應該是存取一整列當作一字串,但是我想要把其中的"2" "AAA" "456" "王小名" 分別用鎮列下去存取, 請問我該如何寫呢...還請版主教我一下了...多謝了^^
如果讀進來的東西放在 buffer
char *cp;
cp = buffer;
while ((*cp != ' ')&&(*cp != '\0'))
cp  ;
這樣就可以取出每一個單字了。
以此類推。
自己花些腦筋會學到更多。
上一篇 Stallion 所寫的也是方法。
是利用函數。
你花些腦筋想想如何利用。
如果都幫你寫好了。那還有什麼樂趣。^_^    
系統時間:2024-05-03 13:32:55
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!