分析scanf(\"%d\",&pro1 [i].num);中需要加上&而scanf(\"%s \",pro1 [i].name);不加的原因呢
时间: 2023-06-05 12:47:39 浏览: 84
这是一段程序代码,使用的是scanf函数,用来读取用户输入的数据。其中,可以看到%d是读取一个整数,%s是读取一个字符串,pro1 [i].num是将读取的整数存入结构体的num成员中,pro1 [i].name是将读取的字符串存入结构体的name成员中。"&"是取地址符,表示将变量的地址传入scanf函数中,而不是变量的值。如果没有"&"符号,则是传入变量的值而不是地址,这样就无法在scanf函数中改变变量的值了。
相关问题
报错scanf("%s", stu.num);无法运行
以下是关于报错scanf("%s", stu.num);无法运行的解释和演示:
1. 报错原因是因为scanf函数中的%s格式化字符串对应的是一个字符数组,而stu.num可能是一个字符指针,导致无法正确运行。正确的写法应该是使用scanf_s函数。
```c
char a[10];
scanf_s("%s", a, 9);
printf("键盘上输入的字符串是:%s\n", a);
```
2. sizeof操作符可以用来获取变量、常量或数据类型所占的字节数。它有几种形式,包括sizeof( 变量\常量 )、sizeof( 数据类型 )等。
```c
sizeof(10);
char c = 'a';
sizeof(c);
sizeof(float);
```
scanf("%d,&num1");
scanf("%d,&num1")是一个C语言中的输入函数,它的作用是从标准输入设备(通常是键盘)读取一个整数,并将其存储在变量num1中。其中%d是格式控制符,表示读取一个整数,&num1是变量num1的地址,用于将读取的整数存储到num1中。需要注意的是,格式控制符和变量地址之间应该用逗号隔开,而且变量地址应该使用&符号取地址。