我来我网
https://5come5.cn
 
您尚未 登录  注册 | 菠菜 | 软件站 | 音乐站 | 邮箱1 | 邮箱2 | 风格选择 | 更多 » 
 

本页主题: 这个C程序有错么? 显示签名 | 打印 | 加为IE收藏 | 收藏主题 | 上一主题 | 下一主题

zhaofei





性别: 保密 状态: 该用户目前不在线
等级: 品行端正
发贴: 289
威望: 0
浮云: 1127
在线等级:
注册时间: 2006-03-27
最后登陆: 2010-03-20

5come5帮你背单词 [ validity /və'liditi/ n. 正确性,有效(性),合法性 ]


这个C程序有错么?

一个师兄在面试我的时候问了这么一个C问题,是MSDN上的一个例子。能正常编译和运行,偶坚持说没错,但师兄却说有,并且是初级C程序员容易犯的错误!!请各位C code 高手秋秋,究竟有没有错!!
Copy code
/* SCANF.C: This program uses the scanf and wscanf functions
  * to read formatted input.
  */

#include <stdio.h>

void main( void )
{
  int  i, result;
  float fp;
  char  c, s[81];
  wchar_t wc, ws[81];

  printf( "\n\nEnter an int, a float, two chars and two strings\n");

  result = scanf( "%d %f %c %C %s %S", &i, &fp, &c, &wc, s, ws );
  printf( "\nThe number of fields input is %d\n", result );
  printf( "The contents are: %d %f %c %C %s %S\n", i, fp, c, wc, s, ws);

  wprintf( L"\n\nEnter an int, a float, two chars and two strings\n");

  result = wscanf( L"%d %f %hc %lc %S %ls", &i, &fp, &c, &wc, s, ws );
  wprintf( L"\nThe number of fields input is %d\n", result );
  wprintf( L"The contents are: %d %f %C %c %hs %s\n", i, fp, c, wc, s, ws);
}
顶端 Posted: 2008-05-10 11:33 | [楼 主]
zhaofei





性别: 保密 状态: 该用户目前不在线
等级: 品行端正
发贴: 289
威望: 0
浮云: 1127
在线等级:
注册时间: 2006-03-27
最后登陆: 2010-03-20

5come5帮你背单词 [ newspaper /'nju:zpeipə/ n. 报纸 ]


Quote:
引用第1楼wangfan于2008-05-10 11:39发表的  :
int  i, result;
  float fp;
  char  c, s[81];
  wchar_t wc, ws[81];

.......


我是问你这个C有问题没有
关我的代码什么事?
这不是我的代码,这是MSDN上的例子,有本事去鄙视微软的程序员啊!!!!fuck!
本帖最近评分记录:
  • 浮云:0(震月) 注意下语言,不要激动 --#
  • 顶端 Posted: 2008-05-10 11:42 | [1 楼]
    zhaofei





    性别: 保密 状态: 该用户目前不在线
    等级: 品行端正
    发贴: 289
    威望: 0
    浮云: 1127
    在线等级:
    注册时间: 2006-03-27
    最后登陆: 2010-03-20

    5come5帮你背单词 [ plate /pleit/ n. 盘,碟,金属板,片;vt. 镀,电镀 ]


    Quote:
    我晕,提意见还骂人,连看都看不出来,也知道你风格到底什么样子了,什么事情都是从小事情开始导致的
    风格不好导致的问题你难道没经历过吗,难道不是问题吗?你转行吧,这行不适合你

    算了,不问你了!期待别人回答!!!
    顶端 Posted: 2008-05-10 11:49 | [2 楼]
    zhaofei





    性别: 保密 状态: 该用户目前不在线
    等级: 品行端正
    发贴: 289
    威望: 0
    浮云: 1127
    在线等级:
    注册时间: 2006-03-27
    最后登陆: 2010-03-20

    5come5帮你背单词 [ versatile /'və:sətail/ a. 多才多艺的,多功能的,反复无常的 ]


    终于找到了,这个错误在scanf函数,
    去掉scanf中的空格,

    result = scanf( "%d %f %c %C %s %S", &i, &fp, &c, &wc, s, ws );

    改为

    result = scanf( "%d%f%c%C%s%S", &i, &fp, &c, &wc, s, ws );


    ?


    原因,scanf()函数接收输入数据时,遇以下情况结束一个数据的输入:(不是结束该scanf函数,scanf函数仅在每一个数据域均有数据,并按回车后结束)。
    ① 遇空格、“回车”、“跳格”键。
    ② 遇宽度结束。
    ③ 遇非法输入。

    所以,在scanf函数的通配符字符串中不需要额外的空格了,scanf函数本身就有这个能力识别空格 ,不需要额外提供空格隔开通配符了。

    ?
    顶端 Posted: 2008-05-12 08:51 | [3 楼]
    我来我网·5come5 Forum » 程序员之家

    Total 0.008194(s) query 6, Time now is:11-22 02:49, Gzip enabled
    Powered by PHPWind v5.3, Localized by 5come5 Tech Team, 黔ICP备16009856号