Re: [問題] 簡單的字串搜尋程式
謝謝高人指點
真得很感謝
不過可能是我表達不清楚
在此先道歉
我的檔案大概長成這樣
Date 國泰 鴻海 聯發科 寶來
08/05 38.5 98.2 480.56 27.12
08/06 40.68 96.5 500 26.98
. . . . .
. . . . .
依此類推
我想說由鍵盤輸入: 國泰
程式就能幫我抓出他是在矩陣的第一行
再由鍵盤輸入:寶來
程式就能幫我抓出寶來是在第四行
接下來我就開始針對國泰那一行的數值和寶來那一行的數值開始作計算
所以我想說把純數值資料丟給依個矩陣叫做data[nrow][ncol]
其他文字丟給一個文字矩陣叫做name[]
然後輸入的文字用do while迴圈跑
如果有match到name[j]的那一行
就把j記錄下來給y
然後之後就用data[i][y]
開始作分析
不知道還有沒有更好的作法
謝謝
※ 引述《softwind (software everywhere)》之銘言:
: ※ 引述《a5170040 (Piggy)》之銘言:
: : 目的:讓使用者輸入ID
: : 讀取進來資料的第一列為我們的ID,第二列開始才是data
: : 藉由我們所輸入的ID讓程式能搜尋到這是在檔案的哪一行
: : (就是變數在第幾行的意思)
: : 以利後續做資料分析
: : 我目前只能做到如果資料全部都是數值,我可以順利做資料分析
: ^^^^
: 架構出來 應該就是換 operation吧
: #include <cstdio>
: #include <cstdlib>
: #include <cstring>
: using namespace std;
: static FILE *l_file=0;
: typedef struct{
: unsigned long ID;
: char *pch_name;
: }StudentInfo;
: static StudentInfo l_IdName[100]={0}; //max has 100 students
: // load data from file to mem.
: void read_file(){
: int idxRow=0;
: l_file = fopen("sample.txt","r");
: if( l_file == 0) return;
: while( !feof(l_file) ){
: unsigned long ID=0;
: char tmp_name[100]={0};//temp string to hold the student name
: char *p_name = 0;
: fscanf(l_file, "%d%*c%s", &ID, tmp_name);
: l_IdName[idxRow].ID = ID;
: // duplicate the name
: p_name = (char*)malloc( strlen(tmp_name)+1 );
: strcpy( p_name, tmp_name );
: l_IdName[idxRow].pch_name = p_name;
: //如果兩個都是 string的話 就用string的方式
: //把 ID的 assign動作代換掉
: idxRow++;
: }
: }
: //search id:name data at mem.
: const char* getName_byID(const unsigned long ID_){
: unsigned int idxRow=0;
: for( idxRow=0;l_IdName[idxRow].pch_name!=0 ;idxRow++){//linear search.
: if(ID_ == l_IdName[idxRow].ID)
: return l_IdName[idxRow].pch_name;
: //如果是string 把相等性判斷 換成 strcmp(X,Y) == 0
: }
: return 0;
: }
: int main(){
: read_file();
: unsigned long ID1,ID2;
: const char *p_name1,*p_name2;
: printf("請選擇班對 :\n");
: printf("學號 1:\n");
: scanf("%d",&ID1);
: printf("學號 2:\n");
: scanf("%d",&ID2);
: p_name1 = getName_byID(ID1);
: p_name2 = getName_byID(ID2);
: printf("%s 和 %s 在一起! 在一起! 在一起!\n", p_name1,p_name2 );
: system("pause");
: return 0;
: }
: 資料檔案 "sample.txt" 範例如下
: ----------- file start --------------
: 1 nick
: 2 jack
: 3 jeff
: 4 jackson
: 5 smith
: 6 smithson
: 7 andy
: 8 anderson
: 9 bill
: 10 Bob
: 11 gate
: 12 hero
: 13 keoi
: ----------- file end -----------------
--
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 210.64.150.221
→
08/08 18:51, , 1F
08/08 18:51, 1F
→
08/08 19:01, , 2F
08/08 19:01, 2F
→
08/08 21:44, , 3F
08/08 21:44, 3F
→
08/08 21:45, , 4F
08/08 21:45, 4F
推
08/08 21:50, , 5F
08/08 21:50, 5F
→
08/08 21:52, , 6F
08/08 21:52, 6F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章