菜鸟问题,送分

allanzhou9527 2006-09-19 08:55:26
scanf("%s",str1);与scanf(" %s ",str2);会有什么区别?为什么?
其中
char str1[10],str2[10];
...全文
187 点赞 收藏 14
写回复
14 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
allanzhou9527 2006-10-11
虽然问题没有解决,也要结帖了
回复
du51 2006-09-19
真想弄明白.要知道这是一个宏...
它从分析字符串入手的.
最终用的可能是VSCANF之类的.定不准了.肯定用VA_LIST
回复
Heaven_Redsky 2006-09-19
函数会在输入中略去一个或者多个空白字符
直到输入非空白字符为止
这或许可以解释第二个空格后边为什么需要再输入些什么才可以
回复
飞哥 2006-09-19
输入格式化吧
回复
Heaven_Redsky 2006-09-19
主要是第二个空格不太好理解 呵呵
回复
mdfy0001 2006-09-19
#include <stdio.h>

void main()
{
char str1[10],str2[10];

printf("Enter the infile name:\n");
scanf("%s %s",str1,str2);

printf("%s,%s",str1,str2);
}
----------------------------------------------------
如上:明白吗。
回复
Heaven_Redsky 2006-09-19
格式中的空格数表示要求函数跳过输入流中的空格数
从下一个非空格字符开始输入
如果 你从开始也没输入空格 直接就输入字符串 并且最后输入回车
也是一样能把输入流倒入字符数组的
回复
Heaven_Redsky 2006-09-19
其实 你不用输入回车 在第二个空格后边随便输入点什么 就行了
回复
allanzhou9527 2006-09-19
楼上的能说详细点吗?
回复
Heaven_Redsky 2006-09-19
和输入流的定义有关系的
第二种方法 要先计算空格的个数
可以理解为计数器
当把输入格式里的空格数排除完之后开始接收输入流的内容
之后 当碰到 空格的时候 再计算后边的空格数
回复
allanzhou9527 2006-09-19
to Jokar(贪睡鼠) :
当然试过,不是很理解,所以问为什么?
重要的不是问有什么区别,是问为什么这种区别

#include <stdio.h>

void main()
{
char str1[10];

printf("Enter the infile name:\n");
scanf(" %s ",str1);

printf("%s",str1);
}

当输入“空格asdf空格”,然后回车的时候,也就是按照二楼的说法输入,还是不行,不会执行后面的输出语句;(编译环境是VC)

只有先输入一段字符,然后回车,在输入任意字符,再回车,才会执行下面的语句!

不解啊!
回复
wzd268 2006-09-19
楼上正解
2如果不输入两个空格的话会出错的,可以自己试试
回复
Jokar 2006-09-19
XD这种东西试一下不就知道了吗?
回复
aminconi 2006-09-19
输入控制,方法2只接收两边带空格的字符串
回复
相关推荐
发帖
C语言
创建于2007-09-28

6.3w+

社区成员

C语言相关问题讨论
申请成为版主
帖子事件
创建了帖子
2006-09-19 08:55
社区公告
暂无公告