00问答网
所有问题
c primer plus中scanf()把一个字符串读进一个字符数组中为什么不要使用&
如题所述
举报该问题
推荐答案 2020-04-01
scanf()把一个
字符串
读进一个字符数组中,语句如下:
char
str[100];
scanf("%s",
str
);
//这里的str就是数组的首地址,%s表明,输入1或多个字符到这个地址中去。
scanf()函数要求参数必须是对应的地址类型,str本身就是地址,所以,不用加&了。
&是取变量地址符,如果在输入数值类,如:%d
%c
%f等数据时,因为,这种变量一般为普通变量,所以,要加&来取地址,以保证读入数据正确。学到指针时,就会清楚些了。
温馨提示:答案为网友推荐,仅供参考
当前网址:
http://00.wendadaohang.com/zd/nnBI0DnnTnjj0rIB0TT.html
其他回答
第1个回答 2019-02-21
scanf函数的接收形式参数必须是对应变量的地址。在接收字符串时对应形式参数的类型是char
*型,一个char型数组的首地址刚好是char
*型,也就是下标为0的那个元素的地址,若数组名是a,则a、&a[0]都可以。那么用了&a会怎么样呢?也不会有问题!因为,&a是这个数组的地址,即&a+1将跳过这个数组而不像a+1只指向下标为1的元素;虽然&a和a的性质差别如此大,但它两的值是相等的,都是第0个元素的地址;C的函数在接收实参时要把实参的类型“自动强制为形参的类型(只指能够被强制的一部分,不能强制的编译时要报错)”;这里本应用a的,用了&a,调用时会把&a的类型自动强制为a的类型,所以不必担心出错……
相似回答
C
语言中的问题不明白
为什么
新人麻烦详细解释一下谢谢
答:
这里scanf指定逗号为输入的分隔符号
。所以输入时数字和字符之间必须有逗号。scanf不指定分隔符时,默认以空白字符(空格、回车、制表符)为分隔符。PS:如果写%d%c不指定分隔符号。由于第二个变量是字符型,输入时中间不要加空格符,否则会将空白符号做为字符接收。
scanf(
"%*s"
);
有
什么
作用
答:
以%s方式读入一个字符串,但是不赋值给任何变量
。等效于 你创建一个足够大的字符数组s[1000];然后 scanf("%s",s);之后s的值不使用。s简化了这个过程 提高效率。
刚开始学习
C
语言,看的书是《C
Primer
Plus
》,请教在第一章中有个例子...
答:
scanf是标准输入函数,它的格式是scanf("%d,%d,%d",&a,&b,&c); scanf的返回值由后面的参数决定 需要注意的是:1、
scanf()中
的变量必须使用地址。 2、scanf()的格式控制串可以使用其它非空白字符,但在输入时必须输入这些字符。 3、在用"%c"输入时,空格和“转义字符”均作为有效字符。
求问c++中string类怎么用
scanf
读取
答:
String类可以用cin流式读取。在用scanf读取时,必须声明长度。不声明长度,直接scanf会出现运行时错误
。include <stdio.h> include <string> using namespace std;int main(){ string a;a.resize(100); //需要预先分配空间 scanf("%s", &a[0]);puts(a.c_str());return 0;} ...
大家正在搜