关于分隔符(换行符'\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