zwb8848happy的专栏

为找个漂亮老婆而读书

scanf问题

(见帖子http://topic.csdn.net/u/20120229/16/711e7609-1605-4965-ab24-11e5a935cc9b.html):

问题:


#include <stdio.h>
int main()
{
    int i ;
    char a[5] ;
    for(i = 0 ; i < 5 ; i++)
    {
        scanf("%c ",a + i) ;        
    }
    for(i = 0 ; i < 5 ; i++)
    {
        printf("%c ", a[i]);
    }
}
代码很简单。我要实现的功能:
输入:a b c d e
输出:a b c d e
很显然我的代码有问题,在我的基础上改改看,必须得用for循环,必须的用到参数i。这个scanf以前只知道用,一直没有好好研究它。


答:

有一个正确修改,把空格放%c前面:

  int i ;
  char a[5] ;
  for(i = 0 ; i < 5 ; i++)
  {
  scanf(" %c", a + i) ;   
  }
  for(i = 0 ; i < 5 ; i++)
  {
  printf("%c ", a[i]);
  }

其实,这涉及到空白符的问题!

"%c " 这里的空格不单指一个空格,而是所有的后继空白符。空格,制表,换行都是空白符。%c后面的空格吃掉了所有的空白符

要是下面这些输入,上面的代码也都能结束。  

a b c d ef
-------------------
a b c d e f
-----------------------
a b c d e  

f
----------


可以研究研究这个:

#include <stdio.h>

int main(void)
{
    int i ;
    char a[5] ;

    scanf("%c ", a + 0) ;    
    scanf("%c ", a + 1) ;  
    scanf("%c ", a + 2) ;  
    scanf("%c ", a + 3) ;  
    scanf("%c", a + 4) ;  /* 还是最后的一个输入有问题,就如楼上说的,那个" "吃掉了后面所输     入的空格和我按下的enter键。*/

    for(i = 0 ; i < 5 ; i++)
    {
        printf("%c ", a[i]);
    }
    printf("\n") ;

    return 0 ;
}

最后给一个百度百科中的scanf函数链接:http://baike.baidu.com/view/1390039.htm

讲的蛮好的

阅读更多
文章标签: c 百度
个人分类: 【c问题集锦】
上一篇BeginPaint和GetDC
下一篇Ctrl+Z问题
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭