fgets()函數讀取鍵盤,去掉換行符或丟棄多余的字符


在上一遍隨筆中,我們知道可以用fgets()函數來代替不安全的gets()函數。fgets函數中的第二個參數限制了讀取的個數。

上篇文章也提到,fgets是會讀取回車換行符的。有時候我們並不希望在字符串中存在換行符。有的時候我們在一行中多輸入了幾個字符,而這幾個字符並不是我們想要的。這時可以寫一個小程序解決這個問題

下面看程序(來自於C Primer Plus 第六版):該程序的功能是:讀取輸入行,刪除存在字符串中的換行符,如果沒有換行符,則丟棄數組裝不下的字符。

#include <stdio.h>
#include <stdlib.h>
#define NUM 5
#define SIZE 10
int main(int argc,char* argv[])
{
    char src[NUM][SIZE];
    printf("請輸入,空行表示結束\n");
    int i=0;
    while(    (  fgets(src[i],SIZE,stdin) ) !=  NULL    &&   src[i][0]!='\n'    )
    {
        int j=0;
        while(  (src[i][j] != '\n')   && (src[i][j]  !=   '\0' )  )
            j++;
        if(src[i][j] ==  '\n')
            src[i][j]='\0';
        else
        {
            while( getchar() !='\n'  )
                continue;
        }



        printf("輸入為:%s\n",src[i]);
        i++;
        if(i>=5)
        {
            break;
        }
    }
    return 0;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM