簡體   English   中英

輸入后忽略Enter鍵的C代碼

[英]C code for ignoring the enter key after input

我在輸入調用后將stdin流中的Enter鍵或字符弄亂了,我遇到了問題。

假設我有一個輸入呼叫,所以我輸入了東西。 但隨后將Enter鍵用作下一個輸入呼叫的輸入。

我認為在c ++中,可以使用cin.ignore()來解決問題。

我只是找不到C版本。

輸入方法是getchar()gets()

抱歉,如果這是重復的。 我找不到與我匹配的問題。 謝謝你的幫助!

        printf("Do you want to view the lines? ");
    int choice = getchar();
    while (choice == 'y')
    {
            char line[80];
            printf("What line do you want to see? ");
            gets(line);
            if (line != "all")
            {
                    n = atoi(line);
                    printf("Line %d: %s\n",n,list[n]);
            }
            else
                    for (int i = 0; i<size; i++)
                            printf("%s \n",list[i]);
            printf("Any more lines? ");
            choice = getchar();
    }

我承認這是非常基礎的,但仍在學習中。

您只需要繼續調用getchar即可消耗流中不需要的字符。 如果您知道總是有一個附加字符,那么就像對getchar附加調用一樣簡單。

如果要從流中刪除多個字符或處理輸入實際上可能包含您確實需要的內容的情況,則可以執行以下代碼,而不是choice = getchar()

do
{
  choice = getchar();
} while(choice=='\n'); // Add any other characters you may want to skip

這將繼續刪除字符(在這種情況下,僅當它們是換行符時),但將選項設置為第一個未刪除的字符。

順便說一句,您不能使用C字符串比較函數(例如strcmp()比較像這樣的字符串( != "all" strcmp()

更一般而言,C ++ istream忽略可以大致用C語言編寫,如下面的代碼所示。 stdin調用以從標准輸入中跳過字符:

int ignore(FILE *stream, int n, int delim)
{
  int c;
  while(n>0)
  {
    c = getc(stream);
    if(c==EOF || c==delim)
    {
      return c;
    }
    n--;
  }
  return(c);
} 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM