scanf("%s",&person[i].job)与scanf("%s",person[i].job)的区别
来源:互联网 发布:kali linux安装到手机 编辑:程序博客网 时间:2024/04/26 21:12
//请对比以下两个程序段,认真分析其因
#include <stdio.h>
#include <string.h>
struct score
...{
char job[10];
union
...{
int classes;
char group[20];
}category;
}person[2];
void main()
...{
int i;
for(i=0;i<2;i++)
...{
scanf("%s",person[i].job);//结构体变量person是数组,因此必须以%s作输入格式符,又因其成员job也是字符数组,所以输入项前不必加取地址运算符&
if(strcmp(person[i].job,"s")==0)
scanf("%d",&person[i].category.classes);
else if(strcmp(person[i].job,"t")==0)
scanf("%s",person[i].category.group);//结构体变量person是数组,因此必须以%s作输入格式符,又因其成员group又是共用体变量category中的字符数组,所以输入项前不必加取地址运算符&
else
printf("input error!");
}
for(i=0;i<2;i++)
...{
if(strcmp(person[i].job,"s")==0)
printf("%d,",person[i].category.classes);
else
printf("%s",person[i].category.group);
}
}
//程序段二:
#include <stdio.h>
#include <string.h>
struct score
...{
char job;
union
...{
int classes;
char group[20];
}category;
}person[2];
void main()
...{
int i;
for(i=0;i<2;i++)
...{
scanf("%s",&person[i].job);//因为结构体变量person是数组,所以必须用%s作格式符,又因为其成员仅是字符型变量而非数组,所以应该加上取地址运算符&.(注意:此语句并不茅盾)
if(person[i].job=='s')
scanf("%d",&person[i].category.classes);
else if(person[i].job=='t')
scanf("%s",person[i].category.group);//必须用%s作格式符,但不能加取地址运算符&.因为结构体变量person是数组,而其成员group是共用体category变量中的字符数组
else
printf("input error!");
}
for(i=0;i<2;i++)
...{
if(person[i].job=='s')
printf("%d,",person[i].category.classes);
else
printf("%s",person[i].category.group);
}
}
#include <stdio.h>
#include <string.h>
struct score
...{
char job[10];
union
...{
int classes;
char group[20];
}category;
}person[2];
void main()
...{
int i;
for(i=0;i<2;i++)
...{
scanf("%s",person[i].job);//结构体变量person是数组,因此必须以%s作输入格式符,又因其成员job也是字符数组,所以输入项前不必加取地址运算符&
if(strcmp(person[i].job,"s")==0)
scanf("%d",&person[i].category.classes);
else if(strcmp(person[i].job,"t")==0)
scanf("%s",person[i].category.group);//结构体变量person是数组,因此必须以%s作输入格式符,又因其成员group又是共用体变量category中的字符数组,所以输入项前不必加取地址运算符&
else
printf("input error!");
}
for(i=0;i<2;i++)
...{
if(strcmp(person[i].job,"s")==0)
printf("%d,",person[i].category.classes);
else
printf("%s",person[i].category.group);
}
}
//程序段二:
#include <stdio.h>
#include <string.h>
struct score
...{
char job;
union
...{
int classes;
char group[20];
}category;
}person[2];
void main()
...{
int i;
for(i=0;i<2;i++)
...{
scanf("%s",&person[i].job);//因为结构体变量person是数组,所以必须用%s作格式符,又因为其成员仅是字符型变量而非数组,所以应该加上取地址运算符&.(注意:此语句并不茅盾)
if(person[i].job=='s')
scanf("%d",&person[i].category.classes);
else if(person[i].job=='t')
scanf("%s",person[i].category.group);//必须用%s作格式符,但不能加取地址运算符&.因为结构体变量person是数组,而其成员group是共用体category变量中的字符数组
else
printf("input error!");
}
for(i=0;i<2;i++)
...{
if(person[i].job=='s')
printf("%d,",person[i].category.classes);
else
printf("%s",person[i].category.group);
}
}
scanf("%s",&person[i].job);//如果person是数组,job是字符变量则此语句不茅盾,且输入时必须用%s作格式符,并要加上取地址运算符&
scanf("%s",person[i].job);//如果person和job都是数组,且job为字符数组,只输入是不需要取地址运算符&
- scanf("%s",&person[i].job)与scanf("%s",person[i].job)的区别
- C语言:scanf("%s",a)和gets(a)的区别(a[i]是字符串数组)
- for(inti=0;i<largenumber;i++){ Person * p = [Person person];代码的问题
- 字符串处理之gets与scanf("%s")的区别
- scanf("%s")和scanf("%c")区别
- scanf和%s,%c的精巧区别
- other person's blog
- 关于gets()字符串的输入流与scanf("%s",s)和cin的区别
- scanf(“%s",)与gets()输入字符串的区别,以及与getchar()吸收回车键的搭配
- scanf("%s",a)和gets(a)的区别
- C语言的中gets(s)和scanf("%s",s)的区别
- scanf 之 %2s 与 %2d
- %*c %*s printf scanf !!!
- scanf("%s",s);语句输入
- parseInt(String s)与valueOf(int i) 的区别
- parseInt(String s)与valueOf(int i) 的区别
- parseInt(String s)与valueOf(int i) 的区别
- scanf中的%*s的解疑
- Effective C++学习笔记:初始化列表中成员列出的顺序和它们在类中声明的顺序相同
- 读大学的意义
- Visitor模式实践
- 用CSS按比例缩放图片
- 确保帐户安全 谈MySQL数据库安全解决方案
- scanf("%s",&person[i].job)与scanf("%s",person[i].job)的区别
- 用CSS样式实现显示隐藏层方案
- Hibernate的检索策略小结
- WEB全能服务器总结
- tomcat 4与tomcat 5 的编码(乱码)问题的一种
- 不安稳
- 在“运行”中的系统命令!(转)
- 分众无线CEO徐茂栋手机营销精准到人
- 用DELPHI的RTTI实现对象的XML持久化