伊莉討論區

標題: 關於自學C語言遇到的問題fgets [打印本頁]

作者: cht1902316    時間: 2020-8-10 02:59 AM     標題: 關於自學C語言遇到的問題fgets

本帖最後由 cht1902316 於 2020-8-10 02:59 AM 編輯

無法上傳程式碼 ,我用圖片試試!!
請見諒!!




補充內容 (2020-8-10 03:06 AM):
抱歉 原來print f 連在一起是敏感字元!!  我查看我過去的帖子!! 有位大大有告訴過我這件事!! 謝謝!! 我的程式碼在下面那一樓呦~
作者: cht1902316    時間: 2020-8-10 03:05 AM

  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. int main(void)
  4. {
  5.   double a,b,c;
  6.   char zx[]="",s[]="";//,s2[]="",s3[]="";
  7.   
  8.   print f("請輸入姓名:\n");  fgets(zx,20,stdin);
  9.   print f("請輸入計概成績:\n");  fgets(s,10,stdin); a=atof(s);
  10.   print f("請輸入數學成績:\n");  fgets(s,10,stdin); b=atof(s);
  11.   print f("請輸入英文成績:\n");  fgets(s,10,stdin); c=atof(s);
  12.   print f("統計中.....\n");
  13.   print f("\t%s的成績如下:\n",zx);
  14.   print f("==================\n");
  15.   print f("\t計概:%3.f\n",a);
  16.   print f("\t數學:%3.f\n",b);
  17.   print f("\t英文:%3.f\n",c);
  18.   print f("-------------------\n");
  19.   print f("\t總分:%3.f\n",a+b+c);  
  20.   print f("\t平均:%3.2f\n",(a+b+c)/3);
  21.   system("pause");
  22.   return 0;
  23. }
複製代碼
我的問題是在
  1. fgets(zx,20,stdin);
複製代碼
他無法顯示正確的中文!
作者: johnwanz    時間: 2020-8-10 09:38 AM

char zx[]="",s[]="";//,s2[]="",s3[]="";

名稱陣列只有一個byte長度,
按照記憶體排列, 名稱會被後續資料所覆蓋.

請改用專案, 透過除錯環境, 觀察記憶體變化, 即可自己找出錯誤.
作者: cht1902316    時間: 2020-8-11 03:01 AM

記憶體變化.......  好吧很深奧~~ 這個難題以後在解好了
作者: tryit244178    時間: 2020-8-11 06:55 PM

3樓大已經解答了。把字串設定長度就可以解決問題
  1. #include <stdio.h>
  2. #include <stdlib.h>

  3. #define CannotPrint printf

  4. int main()
  5. {
  6.         double a, b, c;
  7.         char zx[21], s[11];
  8.        
  9.         CannotPrint("請輸入姓名:\n");                fgets(zx, 20 ,stdin);
  10.         CannotPrint("請輸入計概成績:\n");        fgets(s,10,stdin);                a=atof(s);
  11.         CannotPrint("請輸入數學成績:\n");        fgets(s,10,stdin);                b=atof(s);
  12.         CannotPrint("請輸入英文成績:\n");        fgets(s,10,stdin);                c=atof(s);
  13.         CannotPrint("統計中.....\n");
  14.         CannotPrint("\t%s的成績如下:\n",zx);
  15.         CannotPrint("==================\n");
  16.         CannotPrint("\t計概:%3.f\n",a);
  17.         CannotPrint("\t數學:%3.f\n",b);
  18.         CannotPrint("\t英文:%3.f\n",c);
  19.         CannotPrint("-------------------\n");
  20.         CannotPrint("\t總分:%3.f\n",a+b+c);  
  21.         CannotPrint("\t平均:%3.2f\n",(a+b+c)/3);
  22.         //system("pause")
  23.        
  24.         return 0;
  25. }
複製代碼

作者: cht1902316    時間: 2020-8-11 09:24 PM

tryit244178 發表於 2020-8-11 06:55 PM
3樓大已經解答了。把字串設定長度就可以解決問題

謝謝!!    謝謝!! 大大




歡迎光臨 伊莉討論區 (http://46.wahas.com/) Powered by Discuz!