c語言 gets()相關問題

我知道gets()裡面要擺陣列的名稱如

int a[100];

gets(a);

但我如果我用

int *a

gets(a);

就不可以

為什麼不可以呢? 這個函式不能接指標嗎?

Update:

fgets是什麼 怎麼用呢?

2 Answers

Rating
  • 1 decade ago
    Favorite Answer

    可以接指標,

    可是你的指標指過去的地方要有空間擺喔。

    int a[100]; <-- 這個宣告就已經配置了 100 個大小的 int 位置了。

    int *a; <-- 這個指標目前還沒指到任何位置。

    所以編譯器讓你過的話,你執行起來輕則沒事,重則當機。

    你應該要先配置記憶體空間,

    如 a = malloc(sizeof(int)*100);

    再呼叫 gets 才不會有問題。

    不過我是建議你用 fgets 會比較安全。

    Source(s): me
  • int *a

    這行是說將 a設定為指標變數,因為指標變數只能拿來存放位址

    並且gets( ) 功用是拿來讀取輸入的字串

    但你宣告了指標變數後,並沒有將指標變數指向其他變數

    所以你如果要正確的執行程式

    建議你改成

    char *a,b[10];

    a=&b;

    gets(b);

    puts(b);

    這樣

    希望我能幫上你的忙!

    2008-01-15 21:07:44 補充:

    ^ ^

Still have questions? Get your answers by asking now.