C語言幾個小函數

*編寫一個函數給一個變量賦值,如果賦值失敗(值會依然留在緩衝區),丟棄該輸入行的

所有剩餘內容,並要求重新給這個變量賦值。

代碼如下:

int right_num()
{
    int number;
    while((scanf("%d", &number)) != 1)
    {
        while (getchar() != '\n')
            continue;
        printf("Please enter number again");
        printf(" not alphy.\n");
    }

    return number;
}

也可一個把輸入的錯誤的數打印出來告訴用戶

代碼如下:

int right_num()
{
    int number;
    while((scanf("%d", &number)) != 1)
    {
        while ((ch = getchar()) != '\n')
            putchar(ch);
        printf(" is not right.\n");
        printf("Please enter right number");
        printf(" not alphy.\n");
    }

    return number;
}

*讀取一行中的第一個字符並丟棄剩餘的部分(包括回車也丟掉,主要就是想丟回車)。

代碼如下:

char get_first()
{
    char ch;
    ch = getchar();//接收第一個字符

    while ((getchar()) != '\n')
        continue;//跳過該行剩下的內容

    return ch;
}

讀取一行字符串,可讀取第一個非空格字符前的空格,不包括末尾的回車

n是包括末尾的空字符在內的最大字符數。

char * s_gets(char * st, int n)
{
         int i = 0;
         char * fir_address;
         fir_address = fgets(st, n, stdin);

         while (st[i] != '\n' && st[i] != '\0')
                    i++;//如果輸入的字符數小於n-1,最後一位字符是‘\0’(空字符是自動補充的),倒數第二位是‘\n’,遍歷先遇到‘\n’;如果輸入的字符數大於等於n-1,最後一位字符數是‘\0’(空字符是自動補充的),倒數第二位是輸入的正常字符
         if (st[i] == '\n')
                 st[i] = '\0'//把回車消除掉
         else// 此時st[i] == '\0',下面的語句是把多出來的字符消除掉
                 while (getchar() != '\n')
                         continue;
         return fir_address;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章