冰楓論壇

 找回密碼
 立即註冊
搜索
查看: 1352|回覆: 3
打印 上一主題 下一主題

[求助] C作業問題求助

[複製鏈接]

7

主題

0

好友

221

積分

迷你贊助會員

Rank: 3Rank: 3

UID
161084
帖子
141
主題
7
精華
0
積分
221
楓幣
2893
威望
173
存款
0
贊助金額
150
推廣
0
GP
12
閱讀權限
30
在線時間
203 小時
註冊時間
2016-9-4
最後登入
2024-9-11

2021年紀念勳章 2021中秋節紀念勳章 2022年紀念勳章 懶人勳章 性別(男) 音樂勳章 神手勳章 太陽勳章 論壇粉絲 VIP會員 積分勳章

跳轉到指定樓層
1
發表於 2021-9-7 12:04:25 |只看該作者 |倒序瀏覽
本帖最後由 呂晨 於 2021-9-7 12:06 編輯

要用fopen來讀txt檔來確認要進行矩陣轉置或是矩陣相乘
並且在程式內完成轉置或相乘,並不用輸出到新的txt檔裡面,只要顯示在小黑窗就好
第三張圖是我的程式碼,以及輸出結果
問題一:讀檔只會讀第一行並不會往下繼續讀
問題二:要如何把字串中的數字抓出來

1.PNG (5.33 KB, 下載次數: 7)

1.PNG

2.PNG (6.24 KB, 下載次數: 8)

2.PNG

3.PNG (48.35 KB, 下載次數: 8)

3.PNG

收藏收藏0 推0 噓0


把本文推薦給朋友或其他網站上,每次被點擊增加您在本站積分: 1彩票
複製連結並發給好友,以賺取推廣點數
簡單兩步驟,註冊、分享網址,即可獲得獎勵! 一起推廣文章換商品、賺$$

89

主題

0

好友

283

積分

迷你贊助會員

Rank: 3Rank: 3

UID
92572
帖子
745
主題
89
精華
0
積分
283
楓幣
1123
威望
225
存款
0
贊助金額
150
推廣
0
GP
141
閱讀權限
30
在線時間
411 小時
註冊時間
2015-2-18
最後登入
2024-11-17

2017端午節紀念勳章 發帖達人 懶人勳章 私服達人 神手勳章 Android勳章 2018萬聖節紀念勳章 性別(男) 性別(女) 幼兒勳章 太陽勳章 音樂勳章 論壇粉絲 VIP會員 積分勳章 2019中秋節紀念勳章 解說達人 2020年紀念勳章 2020中秋節紀念勳章 2020聖誕節紀念勳章 聖誕節紀念勳章 聖誕節紀念勳章2 論壇支持王

2
發表於 2021-9-7 13:17:38 |只看該作者

回文獎勵 +1

本帖最後由 love6610716 於 2021-9-7 13:22 編輯

行 24, 25 只有執行一次所以你才只有讀取一行
常用的讀檔方式

  1. while( !feof( fp ) )
  2. {
  3.         // fscanf, print
  4. }
複製代碼
字串中讀取數字
逐char讀取只要是數字就加總起來就可以

  1. void test(char* str){
  2.     char * h; // first copy the pointer to not change the original
  3.     int num = 0;
  4.     int flag = 0;
  5.     for (h = str; *h != '\0'; h++) {
  6.         if(*h >= '0' && *h <= '9'){
  7.             num = num*10 + (*h-'0');
  8.             flag = 1;
  9.         }else if(flag){
  10.             printf("num: %d\n", num);
  11.             num = 0;
  12.             flag = 0;
  13.         }
  14.     }

  15. }
複製代碼
至於 test 中甚麼要加 flag 你可以測試把 flag 刪掉後執行的結果差異
test 執行結果
b.png

[發帖際遇]: love6610716 聲援香港「反送中」,獲得民主獎勵 2 楓幣 幸運榜 / 衰神榜
心情甚麼的...新年也孤單
點評回覆

使用道具 舉報

7

主題

0

好友

221

積分

迷你贊助會員

Rank: 3Rank: 3

UID
161084
帖子
141
主題
7
精華
0
積分
221
楓幣
2893
威望
173
存款
0
贊助金額
150
推廣
0
GP
12
閱讀權限
30
在線時間
203 小時
註冊時間
2016-9-4
最後登入
2024-9-11

2021年紀念勳章 2021中秋節紀念勳章 2022年紀念勳章 懶人勳章 性別(男) 音樂勳章 神手勳章 太陽勳章 論壇粉絲 VIP會員 積分勳章

3
發表於 2021-9-7 14:55:35 |只看該作者
love6610716 發表於 2021-9-7 13:17
行 24, 25 只有執行一次所以你才只有讀取一行
常用的讀檔方式字串中讀取數字
逐char讀取只要是數字就加總起 ...

不知道我哪裡做錯了
讀取input01.txt檔後的結果只有3、6、9C:\Users\luluchen\Desktop\3.PNG
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #pragma warning( disable : 4996 )

  4. void test(char* str);

  5. int main()
  6. {
  7.         int a[3][3];
  8.         char name[12];
  9.         char mode[100];

  10.         printf("輸入txt名稱(結尾.txt)");
  11.         scanf("%s", &name);

  12.         FILE* fp = fopen(name, "r");

  13.         if (fp == NULL)
  14.         {
  15.                 printf("error");
  16.                 return 0;
  17.         }

  18.         fscanf(fp, "%s", &mode);
  19.         if (mode[7] == 'T')
  20.         {
  21.                 while (!feof(fp)) {
  22.                         fscanf(fp, "%s", &mode);
  23.                         test(mode);
  24.                 }
  25.         }
  26.         fclose(fp);
  27. }

  28. void test(char* str)
  29. {
  30.         char* h;
  31.         int num = 0;
  32.         int flag = 0;
  33.         for (h = str; *h != '\0'; h++) {
  34.                 if (*h >= '0' && *h <= '9') {
  35.                         num = num * 10 + (*h - '0');
  36.                         flag = 1;
  37.                 }
  38.                 else if (flag) {
  39.                         printf("num: %d\n", num);
  40.                         num = 0;
  41.                         flag = 0;
  42.                 }
  43.         }
  44. }
複製代碼

3.PNG (16.51 KB, 下載次數: 8)

3.PNG

點評回覆

使用道具 舉報

89

主題

0

好友

283

積分

迷你贊助會員

Rank: 3Rank: 3

UID
92572
帖子
745
主題
89
精華
0
積分
283
楓幣
1123
威望
225
存款
0
贊助金額
150
推廣
0
GP
141
閱讀權限
30
在線時間
411 小時
註冊時間
2015-2-18
最後登入
2024-11-17

2017端午節紀念勳章 發帖達人 懶人勳章 私服達人 神手勳章 Android勳章 2018萬聖節紀念勳章 性別(男) 性別(女) 幼兒勳章 太陽勳章 音樂勳章 論壇粉絲 VIP會員 積分勳章 2019中秋節紀念勳章 解說達人 2020年紀念勳章 2020中秋節紀念勳章 2020聖誕節紀念勳章 聖誕節紀念勳章 聖誕節紀念勳章2 論壇支持王

4
發表於 2021-9-7 18:38:36 |只看該作者
呂晨 發表於 2021-9-7 14:55
不知道我哪裡做錯了
讀取input01.txt檔後的結果只有3、6、9

試試這個
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #pragma warning( disable : 4996 )

  4. void test(char* str);

  5. int main()
  6. {
  7.         int a[3][3];
  8.         char name[12];
  9.         char mode[100];

  10.         printf("輸入txt名稱(結尾.txt)");
  11.         scanf("%s", &name);

  12.         FILE* fp = fopen(name, "r");

  13.         if (fp == NULL)
  14.         {
  15.                 printf("error");
  16.                 return 0;
  17.         }

  18.         fgets(mode, sizeof(mode), fp);
  19.         if (mode[7] == 'T'){
  20.                 fgets(mode, sizeof(mode), fp);// 讀取第二行
  21.                 while (fgets(mode, sizeof(mode), fp) != NULL) {
  22.                         test(mode);
  23.                 }
  24.         }
  25.         fclose(fp);
  26. }

  27. void test(char* str)
  28. {
  29.         char* h;
  30.         int num = 0;
  31.         int flag = 0;
  32.         for (h = str; *h != '\0'; h++) {
  33.                 if (*h >= '0' && *h <= '9') {
  34.                         num = num * 10 + (*h - '0');
  35.                         flag = 1;
  36.                 }
  37.                 else if (flag) {
  38.                         printf("num: %d\n", num);
  39.                         num = 0;
  40.                         flag = 0;
  41.                 }
  42.         }
  43. }
複製代碼
心情甚麼的...新年也孤單
點評回覆

使用道具 舉報

高級模式
B Color Image Link Quote Code Smilies |上傳

廣告刊登意見回饋關於我們管群招募本站規範DMCA隱私權政策

Copyright © 2011-2024 冰楓論壇, All rights reserved

免責聲明:本網站是以即時上載留言的方式運作,本站對所有留言的真實性、完整性及立場等,不負任何法律責任。

而一切留言之言論只代表留言者個人意見,並非本網站之立場,用戶不應信賴內容,並應自行判斷內容之真實性。

小黑屋|手機版|冰楓論壇

GMT+8, 2024-11-21 22:38

回頂部