English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
所有分類

例如這一篇文章
---------------------------------------------------------------------------------------------
輕度颱風碧利斯外圍環流已逐漸威脅台灣海域,並逼近台灣陸地。中央氣象局今天凌晨二時半,針對台灣東北、東南部海面、巴士海峽發布海上颱風警報,預計今天白天就會發布陸上颱風警報。氣象局說,台灣地區最怕西南氣流遇到低壓帶,有時隨著低壓帶一路往北延伸,下雨區域也會由南到北一路擴展。
-----------------------------------------------------------------------------------------------------
如何讓她執行程式時自動擷取.TXT檔的文字,然後每句存入一個陣列中

2006-07-18 06:24:53 · 5 個解答 · 發問者 大仙 1 in 電腦與網際網路 程式設計

目前我已經寫出 擷取字串但不知如何一句一句存入陣列
#include

void main()
{
FILE *fptr;
char ch;
fptr = fopen("C:\\Documents and Settings\\junco\\桌面\\test.txt","r");
while((ch=fgetc(fptr))!=EOF)
printf("%c",ch);
fclose(fptr);
system("pause");
}

2006-07-18 09:58:43 · update #1

字串最後存入陣列 是我要做排列組合用的

2006-07-19 10:57:19 · update #2

5 個解答

好多人在問這題啊!
還要排列組合,對吧!?
就寫你要的部份的程式給你吧!
這程式應該要用 malloc() 去寫的,沒空,再 30 小時要交論文了!
就先這樣寫給你。

#include
#include

int main(int argc, char **argv)
{inti, j, k, l, np;
short*sep, sen[9][90]; // 9句,每句最長 88 字 ( 少 2 的原因在: [0]放字數,再扣去最後結束字串的 0 )
char*punc=",。?!:;"; // 標點符號不夠的話,你自己再加
FILE*a;

sep = (short *) punc; // 把標點陣列轉成
np = strlen(punc) >> 1; // 共有 np 個標點
if ((a=fopen(argv[1], "r")) == NULL)
return 1;
l = 0, i = 1; // 第0句,第1字
while ((j=fgetc(a))!=EOF && (k=fgetc(a))!=EOF)
{ sen[l][i] = (k<<8) | j; // 把它轉成 2 個 bytes 的 short int,存入句子陣列
for (j=0; j if (sep[j] == sen[l][i])
{sen[l][i+1] = 0; // 句子結束
sen[l][0] = i; // 儲存字數,未來好做排列組合
l++, i = 0; // 下一句
break; // 不用再比下一個標點符號
}
i++; 下一字
}
fclose(a);

for (i=0; i printf("len:%d %s\n", sen[i][0], &sen[i][1]);

return 0;
}

祝你好運、成功啦

加油!^_^

2006-07-19 16:43:08 補充:
對了,文字檔檔名放在命令後面。如果程式叫 xx, 文字檔叫 yy,就這麼用:xx yy

2006-07-19 12:41:49 · answer #1 · answered by ? 7 · 0 0

什麼叫做『字串存入陣列』啊?你到底希望得到什麼結果?程式的目的是什麼?不講清楚,大家很難幫你啊...

2006-07-19 08:52:35 · answer #2 · answered by Rody 5 · 0 0

如果只是要放進陣列的話,不就直接放進去= =
我想你比較有問題的大概是字串陣列的應用吧。其實字串陣列就只是一堆字元所組成的陣列,跟你普通在用的整數陣列可以算相同的東西,差別就只在你一個位置可以放的值沒有整數陣列大。簡單來說,char string[i]能放入的值為1~255,而int interger[i]可以放的值為-32768~32767。
如果不是的話,我想你可能在找C裡面有沒有好用的function,我只能說沒有,有的話你的問題會有很多人幫你解答的= =

2006-07-18 17:50:40 · answer #3 · answered by ? 4 · 0 0

FILE *fp;//宣告開檔
char *c;//宣告一個記憶體位址
fp = fopen("檔名","r");//讀檔
while((fscanf(fp,"%s",&c))!=EOF)//讀檔格式設定還沒讀到黨委的話繼續
{
printf("%s",c);//顯示讀出來的東西
}
fclose(fp);
//就這樣子
//還有很多參數可以應用搭配

2006-07-18 08:02:09 · answer #4 · answered by 永恆的破壞 5 · 0 0

擷取字串的部分可以使用cin ,他會去把輸入,抓成一個一個的token (單元),每個token是用空白,tab或者是換行,等等的分隔符號分隔。
所以你如果打 IO_completion,at time 5
他會認為第一個token是 IO_completion,at
最簡單的方法,是限定使用者輸入的時候,一個一個字,都用空格隔開。
可是如果要防呆的話,就你要自己檢查。
使用getline指令。
getline(cin, str)
把cin整行都抓到str裡面,然後在str裡面慢慢去分析。
例如,把,前的字串,全部抓下來,然後當成指令

getline(cin, str);
int com_pos = str.find(","); // 找到","的位置
string command = str.substr(0,com_pos); //把","前面的字串抓下來。
command.trim() //這個不是string的function,要自己寫。作用是把一個string頭尾的空白拿掉,個人覺得應該會很有用。
switch(command){
case "IO_command": // Do what ever...
case "delete" : // ....;

存入陣列的部分可以利用指標。
事先宣告一個動態的陣列,再利用指標指向字串把字串存入陣列中。
指標的特點是它是間接指向你在C/C++裡宣告的實體.
它的好處都是因這個特點而來. 用指標可以省時,省力,和省空間.

2006-07-18 06:42:39 · answer #5 · answered by Kevin 2 · 0 0

fedest.com, questions and answers