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语言会为其分配一个确定的地址,因此我们用字符数组的初始地址赋给所新定义的字符指针