scanf问题

Scanf(格式控制,地址表列)

 

“地址表列”是由若干个地址组成的表列,可以是变量的地址,也可以是字符串的首地址

scanf(“%d%d”,&a,&b)

 

1.       对于%d类型,输入数据时,在两个数据间可以以一个或多个空格键、TAB键和回车键,只要保证在最后一个数据输完后,能接有ENTER键即可

2.        对于%c类型,输入数据时,不能同上因为空格和TAB字符都会作为有效字符输入

只能按照格式控制,严格的遵循这个规则

  3 如在“格式控制中除了格式说明外还有其他字符,则输入时要输入相同的字符

  scanf(“%c,%c,%c”&a,&b,&c);

  则在控制台中输入为 d,e,f 再按回车

 

4.当输入字符串时有两种情况

 

字符数组

Char str[10];

Scanf(“%s”,str)   //由于数组名就是是一个地址,这里不需用&符号

Printf(“%s”,str)   //系统找到地址str,然后一个一个输出

    

 

 字符指针

           Char  *str;

Scanf(“%s”,str)  

Printf(“%s”,str) 

上述写法是不安全的(VC中是编译不过去的出现读写错误

 

问题:Char  *str=helloworld;

Scanf(“%s”,str)   

Printf(“%s”,str)  也会出现读写错误  ??

 

难道用把字符串常量的首地址给字符指针变量,该指针所指向的位置依然不能写,只能读????

       正确的方法:由于创建一个字符数组时,C语言会为其分配一个确定的地址,因此我们用字符数组的初始地址赋给所新定义的字符指针

            

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值