| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付学习型 ASP/PHP/ASP.NET 主机 30元/年
高端软件开发 = 年薪十万不是梦   
共有 630 人关注过本帖
标题:printf的格式和scanf的格式真的不同吗?
收藏  订阅  推荐  打印
yuyangtian1000
Rank: 2
等级:注册会员
帖子:84
积分:1022
注册:2008-5-30
printf的格式和scanf的格式真的不同吗?

例如:
#include <stdio.h>
void main()
{
     char str[13],str1[4];
     scanf("%s%s",str,str1);
     printf("%s,%s",str,str1);
getch();
}

scanf的格式两个%s  之间不用逗号分隔。只是在输入数据的时候用空格分开。而printf两个%s之间切一定用逗号分隔开来。
这个是不是这个样子?还有如果在scanf中用逗号分隔两个%s就会出现乱码。
2008-7-29 09:52
xiaomengxia2008
Rank: 2
等级:注册会员
帖子:80
积分:970
注册:2008-7-23

不是

printf函数是一个标准库函数,它的函数原型在头文件“stdio.h”中。但作为一个特例,不要求在使用 printf 函数之前必须包含stdio.h文件。printf函数调用的一般形式为: printf(“格式控制字符串”,输出表列)其中格式控制字符串用于指定输出格式。 格式控制串可由格式字符串和非格式字符串两种组成。格式字符串是以%开头的字符串,在%后面跟有各种格式字符,以说明输出数据的类型、形式、长度、小数位数等

scanf函数是一个标准库函数,它的函数原型在头文件“stdio.h”中,与printf函数相同,C语言也允许在使用scanf函数之前不必包含stdio.h文件。scanf函数的一般形式为: scanf(“格式控制字符串”,地址表列); 其中,格式控制字符串的作用与printf函数相同,但不能显示非格式字符串, 也就是不能显示提示字符串。地址表列中给出各变量的地址。 地址是由地址运算符“&”后跟变量名组成的。例如,&a,&b分别表示变量a和变量b 的地址。这个地址就是编译系统在内存中给a,b变量分配的地址。在C语言中,使用了地址这个概念,这是与其它语言不同的。 应该把变量的值和变量的地址这两个不同的概念区别开来

总的来说在scanf的“格式控制字符串”中,%d%d之间可以有“,”“ ”等,但是在输入数据时,也要按这个格式输入“5,5”“5 5”。

[ 本帖最后由 xiaomengxia2008 于 2008-7-29 09:58 编辑 ]
2008-7-29 09:56
blueboy82006
Rank: 12Rank: 12Rank: 12
来自:幻想世界
等级:版主
威望:16
帖子:1212
积分:12084
注册:2007-7-23

不一定要按你说的格式写,
printf和scanf都一样,
只需前后一致就行了。。。

闭关修炼中!......
2008-7-29 09:57
yuyangtian1000
Rank: 2
等级:注册会员
帖子:84
积分:1022
注册:2008-5-30

谢谢了其中这句对我有启发:
其中,格式控制字符串的作用与printf函数相同,但不能显示非格式字符串
2008-7-29 10:00
yuyangtian1000
Rank: 2
等级:注册会员
帖子:84
积分:1022
注册:2008-5-30

3楼的我讨论的是  printf("%s,%s")与scanf("%s%s").的不同
如果都写成 printf("%s,%s")scanf("%s,%s").就会出现乱码
2008-7-29 10:04
infernos
Rank: 2
等级:注册会员
帖子:42
积分:590
注册:2007-11-2

#include <stdio.h>
void main()
{
     char str[13],str1[4];
     scanf("%s,%s",str,str1);
     printf("%s,%s",str,str1);
getch();
}
注意看这一行  scanf("%s,%s",str,str1);
如果按这么写  那么输入的时候就必须用逗号间隔了
这是我的理解..
2008-7-29 12:01
woshiyun
Rank: 3Rank: 3
等级:中级会员
帖子:150
积分:2094
注册:2008-6-16

引用:
infernos 在 2008-7-29 12:01 的发言:

#include
void main()
{
     char str[13],str1[4];
     scanf("%s,%s",str,str1);
     printf("%s,%s",str,str1);
getch();
}
注意看这一行  scanf("%s,%s",str,str1);
如果按这么写  那么输入的时候就 ...
用逗号分隔也没用,因为这是输入字符串,和整数是不同的。自己可以试试。
2008-7-29 12:04
VxWorks
Rank: 4
来自:WindRiver
等级:高级会员
威望:1
帖子:575
积分:6976
注册:2007-11-24

引用:
xiaomengxia2008 在 2008-7-29 09:56 的发言:

不是

printf函数是一个标准库函数,它的函数原型在头文件“stdio.h”中。但作为一个特例,不要求在使用 printf 函数之前必须包含stdio.h文件。printf函数调用的一般形式为: printf(“格式控制字符串”,输出表列 ...
建议多看点书,学好了再来论坛指导别人,要不然好心帮人却误导了别人就是罪过了。
还有,不要把TC当作C语言标准。

Yesterday is a history, tomorrow is a mystery, and now is a gift, that's why is called present.
2008-7-29 12:06
conantr
Rank: 1
等级:新手上路
帖子:7
积分:174
注册:2008-7-28

scanf("%s%s",str,str1);printf("%s,%s",str,str1);输入一个字符串赋给str后按回车,再接着输入字符串赋给str1,比如输入abc赋给str,回车,在输入def赋给str1,则程序输出结果为abc,def
2008-7-29 13:07
StarWing83
Rank: 12Rank: 12Rank: 12
来自:湖北工业大学
等级:版主
威望:9
帖子:2483
积分:26197
注册:2007-11-16

引用:
VxWorks 在 2008-7-29 12:06 的发言:




建议多看点书,学好了再来论坛指导别人,要不然好心帮人却误导了别人就是罪过了。
还有,不要把TC当作C语言标准。
赞……

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-7-29 13:29
共有 629 人关注过本帖
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.057466 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved