回覆列表
  • 1 # rangyouhua1802659

    s_gets()函式的用法:

    char *s_gets(char * st, int n)

    {

    char * ret_val;

    int i = 0;

    ret_val = fgets(st, n, stdin);

    if (ret_val)

    {

    while (st[i] != "\n" && st[i] != "\0")

    i++;

    if (st[i] == "\n")

    st[i] = "\0";

    else

    while (getchar() != "\n")

    continue;

    }

    return ret_val;

    }

    fgets的作用是讀取字串,直至達到最大字元數量或遇到第一個換行符為止,且fgets會把讀取到的換行符儲存在字串中(fgets函式為<stdio.h>輸入輸出函式系列的可選擴充套件,可直接呼叫,用法應該也找到的,就不再贅述)。

    有些時候為了避免換行符儲存在字串中,字串中有換行符可能會帶來一些麻煩,就建立了s_gets()函式,其作用是讀取整行輸入並用空字元代替換行符,或讀取一部分輸入,並丟棄其餘部分

    如果fgets成功讀取到了字串則進入if判斷語句,透過迴圈找出字串中的換行符或空字元,,,

    fgets函式讀到換行符時就會停止讀入字元,如果找到換行符,if語句就會將其變為空字元並返回字串,若while迴圈讀取到了空字元,由於空字元象徵著字串的結束,此時需要丟棄輸入行的餘下字元。

    因為輸入行中多出來的字元會被留在緩衝區中,成為下一次讀取語句的輸入,假設下一條語句要讀取一個char型別的值,就可能導致程式崩潰,丟棄輸入行餘下的字元保證了讀取語句和鍵盤輸入同步

  • 中秋節和大豐收的關聯?
  • 義大利歌曲《尼娜》,求歌詞漢語的諧音?