scanf问题

原创 2012年03月24日 14:18:48

(见帖子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语言中scanf()的相关问题

最近学习了数据结构中的线性表,然后就像做一个学生成绩管理系统的小程序,不过在写数据输入的时候,遇到了一些个问题,然后上网给google了一下,发现scanf(),这个函数是相当的复杂啊!于是将搜索到的...

c语言中scanf("%c",&c)吃掉回车或者空格字符的问题

问题来源http://zhidao.baidu.com/question/487898822.html?oldq=1#reply-box-1224608638 #include void main(...

scanf读取单个字符问题

在编写简单程序寻找元音字母小程序是遇到的问题: 原本计划在程序中用到scanf("%c",ch)读取单个字符,但是在一次执行过程中出现运行两次的情况:#include #include int ...
  • qiye005
  • qiye005
  • 2015年06月26日 15:48
  • 1820

C语言中利用scanf语句输入多个值的问题

今天利用共同体变量写了一个小程序要求:有若干人员的数据,其中有学生和教师。学生的数据包括姓名、号码、性别、职业、班级。教师数据包括姓名、号码、性别、职业、职务。要求用同一个表格来处理。 编译通过后运...
  • jobsss
  • jobsss
  • 2012年04月24日 10:54
  • 12712

c 中一些常见ASCII值 以及scanf读入字符时的问题 树的同构

ASCII值为8、9、10 和13  32分别转换为退格、制表、换行和回车字符及空格。 /*#include   int main(){    int a;    char b;   ...

关于scanf函数debug无法通过的问题

今天遇到scanf函数,我试着

使用scanf函数遇到的问题

同寝室的同学需要用C实现一个
  • bxgsl
  • bxgsl
  • 2014年10月31日 17:01
  • 146

scanf输入格式的一些问题

scanf

Scanf连续调用多次并且存在%c的问题

问题现象: 当程序中存在多个scanf时,针对第一个scanf的输入,一般用户会以空白字符(空格、换行、tab、换页符)等结束。但若后面有一个scanf(“%c”,&ch),则刚才输入的空白字符会被...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:scanf问题
举报原因:
原因补充:

(最多只允许输入30个字)