1.scanf函数中的格式控制应该是变量名的地址,而不是变量名,例如a和b为整形变量,如果写成scanf(“%d%d”,a,b); 就会出错的,应该将这个,a,b改成&a,&b;(表示地址)。
2.我们都知道C语言中的字符串是存放到字符数组中的,如果我们定义了一个字符数组,如char a[20]我们想把字符串输入到这个字符数组通常有两种方式,第一种.逐个字符输入,采用for循环的形式。第二种,直接输入字符串的形式,用格式控制符%s第一种我们这样输入,如输入:
for(i=0;i<=19;i++)
{
scanf(“%c”,&a[i]);
}
第二种我们用这种方式输入 scanf(“%s”,a); 注意第二种这种形式。
为什么要我们没有加&?C语言中把这个数组名当做该数组的起始地址。但是这种数组仅限于字符数组,不要企图,利用数值型数组的名来整体输入,一个数值型的个数值型的数组,这就是大错误了。比如这样写是不正确的:
int a[10];
scanf(“%d”,a);
3.对于指针问题,大家需要注意一点, 指针就是地址,这是在任何条件下都成立的。看下面这个例子:
char *p;
char a[20];
p=a;
for(i=0;i<20;i++,p++)
{
scanf(“%c”,p);
}
这是一个采用指针变量输入数据的例子,这里的指针变量p在for循环之前就指向了这个数组a,也就是指向了数组的首元素,也就是是说指针变量p里存放的是,数组首元素的地址,所以在用这个scanf函数进行输出时,指针变量的前方就不用再加取地址符号了。