查看完整版本: 關於自學C語言遇到的問題fgets
頁: [1]

cht1902316 發表於 2020-8-10 02:59 AM

關於自學C語言遇到的問題fgets

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

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




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

cht1902316 發表於 2020-8-10 03:05 AM


#include<stdio.h>
#include<stdlib.h>
int main(void)
{
  double a,b,c;
  char zx[]="",s[]="";//,s2[]="",s3[]="";
  
  print f("請輸入姓名:\n");  fgets(zx,20,stdin);
  print f("請輸入計概成績:\n");  fgets(s,10,stdin); a=atof(s);
  print f("請輸入數學成績:\n");  fgets(s,10,stdin); b=atof(s);
  print f("請輸入英文成績:\n");  fgets(s,10,stdin); c=atof(s);
  print f("統計中.....\n");
  print f("\t%s的成績如下:\n",zx);
  print f("==================\n");
  print f("\t計概:%3.f\n",a);
  print f("\t數學:%3.f\n",b);
  print f("\t英文:%3.f\n",c);
  print f("-------------------\n");
  print f("\t總分:%3.f\n",a+b+c);  
  print f("\t平均:%3.2f\n",(a+b+c)/3);
  system("pause");
  return 0;
}我的問題是在fgets(zx,20,stdin); 他無法顯示正確的中文!...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>

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樓大已經解答了。把字串設定長度就可以解決問題#include <stdio.h>
#include <stdlib.h>

#define CannotPrint printf

int main()
{
        double a, b, c;
        char zx, s;
       
        CannotPrint("請輸入姓名:\n");                fgets(zx, 20 ,stdin);
        CannotPrint("請輸入計概成績:\n");        fgets(s,10,stdin);                a=atof(s);
        CannotPrint("請輸入數學成績:\n");        fgets(s,10,stdin);                b=atof(s);
        CannotPrint("請輸入英文成績:\n");        fgets(s,10,stdin);                c=atof(s);
        CannotPrint("統計中.....\n");
        CannotPrint("\t%s的成績如下:\n",zx);
        CannotPrint("==================\n");
        CannotPrint("\t計概:%3.f\n",a);
        CannotPrint("\t數學:%3.f\n",b);
        CannotPrint("\t英文:%3.f\n",c);
        CannotPrint("-------------------\n");
        CannotPrint("\t總分:%3.f\n",a+b+c);  
        CannotPrint("\t平均:%3.2f\n",(a+b+c)/3);
        //system("pause")
       
        return 0;
}...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div><br><br><br><br><br><div></div>

cht1902316 發表於 2020-8-11 09:24 PM

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

謝謝!!  {:31:}{:45:}  謝謝!! 大大
頁: [1]