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

假如我的文字檔裡的內容是
0;"A(((123.23(空格) 456.56 (空格)4.598,563.54(空格) 8795.56 (空格)4568.23)))"
1;"A(((353.143(空格) 46.55 (空格)42.58,43.524 (空格)85.556 (空格)468.2443)))"
我想要讀裡面的數字~~
該怎麼將字串變成我要的數字
我只想要
123.23
456.56
4.598,
563.54
8795.56
4568.23
3個數字一組3個數字一組的使用

2007-02-08 08:06:09 · 1 個解答 · 發問者 王子麵 3 in 電腦與網際網路 程式設計

Jacob Lee大大感謝你的回答
不過可能是我表達不清楚
因為那些數值都是在XXX.txt檔裡頭
我是卡在該怎麼把它讀出來用
而不是把它的內容寫死在程式裡
不好意思喔~~
不知道你看到這堤~~可不可以在幫我解決

2007-02-09 03:43:35 · update #1

你宣告的char裡 最後面 *sep = "";,() A";是什麼東西阿@"@

2007-02-09 03:48:40 · update #2

恩 恩 不好意思~~
我是只想要讀取文字檔裡的數字來用~~
就是以下這些
123.23
456.56
4.598,
563.54
8795.56
4568.23
所以我希望能
-->read file.txt-->把數字讀取出來用
雖然我現在已經寫好程式把玲玲摳摳的東西給去掉
文字檔裡只剩數字了
可是因為是字串~~我不知道該怎麼用

2007-02-09 08:07:54 · update #3

我目前是用1個字1個字讀~~然後乘10~~小數點後是除10
想看大大有沒有比較快的方法

2007-02-09 08:09:03 · update #4

如果能直接讀文字檔~~
而不要像我一樣多一步驟把布相關的符號過濾掉
那是最好不過了
(可否請大大在程式重點部份~~給個註解)

2007-02-09 08:22:44 · update #5

1 個解答


#include
#include
#include

#define NUM 3

int main(int argc, char **argv)
{ int i, j;
float n[NUM];
char a[][60] = { "0;\"A(((123.23 456.56 4.598,563.54 8795.56 4568.23)))\"",
"1;\"A(((353.143 46.55 42.58,43.524 85.556 468.2443)))\"" },
*sep = "\";,() A";
for (i=0; i<2; i++)
{ n[0] = atof( strtok(&(a[i][1]), sep) );
for (j=1; j n[j] = atof( strtok(NULL, sep) );
for (j=0; j printf("%8.3f\t", n[j]);
printf("\n");
for (j=0; j n[j] = atof( strtok(NULL, sep) );
for (j=0; j printf("%8.3f\t", n[j]);
printf("\n");
}
return 0;
}
用 scanf("%d;\"A(((%f %f %f,%f %f %f)))\""), &j, &n[0], &n[1], &n[2], &n[3], &n[4], &n[5]);
也可以做出來。
你可以自己試試看。
當然,宣告時的 n 的大小要改。
加油 ^_^

2007-02-09 12:12:49 補充:
那是你所說 txt 檔裡,不是你要的字
你不是只要數字嗎?
可是它卻有文字、符號等。
我只是把它所有的其它符號列在那裡
strtok 會根據那些符號,把是那些字的略過

2007-02-09 12:13:54 補充:
至於從檔案讀,那方法更多!
我在趕作業,再一個小時就會好
到時再寫給你

2007-02-09 13:24:22 補充:
#include
#include
#include

#define MaxLen 99
#define NUM 3


int main(int argc, char **argv)
{ int i, j;
float n[NUM];
char a[MaxLen],
*sep = "\\";,() A";
FILE *f;

2007-02-09 13:25:01 補充:
f = fopen("NUM.TXT", "r");

while (fgets(a, MaxLen, f))
{ n[0] = atof( strtok(&(a[1]), sep) );

for (j=1; j n[j] = atof( strtok(NULL, sep) );

for (j=0; j printf(".3f", n[j]);

printf("\\n");

2007-02-09 13:27:47 補充:
上一個被知識 弄壞了,重發!

f = fopen("NUM.TXT", "r");

while (fgets(a, MaxLen, f))
{ n[0] = atof( strtok(&(a[1]), sep) );

for (j=1; j n[j] = atof( strtok(NULL, sep) );

for (j=0; j printf("%.3f", n[j]);

printf("\\n");

2007-02-09 13:29:06 補充:
for (j=0; j n[j] = atof( strtok(NULL, sep) );

for (j=0; j printf("\.3f", n[j]);

printf("\\n");
}

return 0;
}

,那是11

2007-02-09 13:29:47 補充:
第二個應該是%%再接11

2007-02-09 13:30:06 補充:
一個%而已

2007-02-09 13:32:05 補充:
這樣應該就可以了
如果只有數字,可以用下面那個程式,比較簡單

2007-02-09 13:54:38 補充:
大哥,自己看吧!!!
我今晚 23:59 Due 2 個作業
週日 9:30 再 Due 一個作業
週一 9:00 期中考,
  14:00 再 Due 一個作業
週三 15:00 再 Due 一個三週分量、只給10天寫的作業
週四 23:59 再 Due 一個作業

我找誰幫忙啊!?

2007-02-09 13:58:10 補充:
你這篇我已經寫三個版本了!
你改的純數字檔還藏了一個,在裡面,
我還吃了個悶虧。
不過,我還是在程式裡把它作了,
免得你哪裡又漏改了,讀不進來。
(第三個版寫好測好,還沒 post 上來!)

你就拿第二個版吧。
它可以讀檔,你不用改文字檔內容。
有第二個,第三個你用不到了。
多 post 上來,你多弄混而已。

2007-02-09 13:59:52 補充:
真是百變的知識+
.3f 是 % 11.3f,沒有空格

2007-02-08 19:32:21 · answer #1 · answered by ? 7 · 0 0

fedest.com, questions and answers