關於分隔符(換行符'\n'、空格符)引起的字符輸入問題


題目:輸入一個字符串和一個字符,在字符串 s 中查找字符 ch,如果找到返回第一次找到的該字符的字符串中的位置(地址);

示例1:

int main(void)
{
  char ch, str[80];

  printf("Input the string:\n");
  scanf("%s", str);
  ch = getchar( );
  ...
 
  return 0;
}
按照示例編寫並運行程序后,發現輸入字符串后,直接跳過了后一語句 ch = getchar( ); 即無法輸入要查找的字符,為什么?
原因:
  首先scanf函數接收鍵盤輸入的字符串,然后按換行符(或其他分隔符),此時有兩個操作:1)scanf( )函數遇到回車符(即換行符)或空格符字符串輸入結束;2)換行符也是一個字符,
其被后一句 ch = getchar( ) 接收,即此時ch的值是一個換行符'\n';  所以對程序稍作修改,再添加一條語句 getchar( ); 即可。
 
  ...
      printf("Input the string:\n");
  scanf("%s", str);
  getchar( );    // 跳過之間的分隔符;
  ch = getchar( );
  ...
 
示例2
// 驗證函數Precede
  char c1, c2;
  while (c1 != '$') {
    scanf("%c%c", &c1, &c2);
    getchar();   // 這句很重要;
    printf("c1 = %c, c2 = %c\n", c1, c2);
    printf("precede = %c\n", Precede(c1, c2));
  }
 
說明:在輸入要作為實參的字符 c1、c2時,scanf() 后一定要加一句getchar( ),其用來接受輸入完畢后的換行符; 不然c1很容易接受換行符。
 


免責聲明!

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



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