字符串的比较函数
strcmp()和strncmp()
int strcmp(const char*s1,const char*s2);若str1=str2,则返回0;若str1<str2,则返回负数,若大于,则返回正数
关于结构体
候选人练习
#include <stdio.h>
#include <string.h>
struct Student{
char name[32];
int point;
};
int main(){
struct Student xm[3];
struct Student max;
int len;
int i,j;
int total = 5;
//特殊情况,输入没有候选人的情况
int mark = 0;
char tmpName[32];
//首先初始化
len = sizeof(xm)/sizeof(xm[0]);
for(i=0;i<len;i++){
xm[i].point = 0;
printf("请输入选民的姓名:\n");
scanf("%s",xm[i].name);
}
//投票环节
for(i = 0;i<5 ;i++)//这里5是投票的人数
{
mark = 0;
printf("请输入投票目标的姓名:\n");
memset(tmpName,'\0',sizeof(tmpName));//每次清空一下
scanf("%s",tmpName);
for(j=0;j<len;j++)//拿到候选人名字,候选人票数+1
{
if((strcmp(tmpName,xm[j].name))==0){
xm[j].point++;
mark = 1;
}
}
if(mark == 0)
printf("没有此候选人,此票放弃\n");
}
//唱票环节
for(i=0;i<len;i++){
printf("候选人%s的票数是%d\n",xm[i].name,xm[i].point);
}
//得出票数最高的候选人
max = xm[0];
for(i=0;i<len;i++){
if(max.point < xm[i].point){
max = xm[i];
}
}
printf("最终获得选票数目最高的是:%s\n",max.name);
return 0;
}
对比使用结构体指针的方法
#include <stdio.h>
#include <string.h>
struct Student{
char name[32];
int point;
};
int main(){
struct Student xm[3];
struct Student max;
int len;
int i,j;
int total = 5;
struct Student *ppp = xm;
//特殊情况,输入没有候选人的情况
int mark = 0;
char tmpName[32];
//首先初始化
len = sizeof(xm)/sizeof(xm[0]);
for(i=0;i<len;i++){
ppp->point = 0;
printf("请输入选民的姓名:\n");
scanf("%s",ppp->name);
ppp++;
}
ppp = xm;
//投票环节
for(i = 0;i<5 ;i++)//这里5是投票的人数
{
mark = 0;
printf("请输入投票目标的姓名:\n");
memset(tmpName,'\0',sizeof(tmpName));//每次清空一下
scanf("%s",tmpName);
//!!!!!!!!!!!!!!!!!!!!!!!!
//!!!!!!!!!!!!!!!!!!!!!!!!
ppp = xm;//!!!!!!!!!!!!!!!此处,再下一次输入名字之前,必须要要指针指向数组头
//!!!!!!!!!!!!!!!!!!!!!!!!
//!!!!!!!!!!!!!!!!!!!!!!!!
for(j=0;j<len;j++)//拿到候选人名字,候选人票数+1
{
if((strcmp(tmpName,ppp->name))==0){
ppp->point++;
mark = 1;
}
ppp++;
}
if(mark == 0)
printf("没有此候选人,此票放弃\n");
}
ppp = xm;
//唱票环节
for(i=0;i<len;i++){
printf("候选人%s的票数是%d\n",ppp->name,ppp->point);
ppp++;
}
ppp = xm;
//得出票数最高的候选人
max = xm[0];
for(i=0;i<len;i++){
if(max.point < ppp->point){
max = xm[i];
}
ppp++;
}
printf("最终获得选票数目最高的是:%s\n",max.name);
return 0;
}
通过结构体指针间接访问结构体内存里面的数据时,用" -> "符号
对于变量名访问,用点运算符,
通过地址来访问,是用 ->运算符来我访问
#include <stdio.h>
#include <string.h>
struct Test{
int data;
char name[20];
};
int main()
{
struct Test p1 = {10,"qwe"};
struct Test *p2 = &p1;
printf("%d\n",p1.data);
printf("%d\n",p2->data);
return 0;
}
#include <stdio.h>
#include <string.h>
struct Test{
int data;
char name[20];
};
int main()
{
struct Test p1 = {10,"qwe"};
struct Test *p2 = &p1;
struct Test arr[3] = {{1,"a"},{2,"b"},{3,"c"}};
struct Test *p3;
p3 = &p1;
struct Test *pp = arr;
for(int i = 0;i<3;i++)
{
printf("%d,%s\n",pp->data,pp->name);
pp++;
}
printf("%d\n",p1.data);
printf("%d\n",p2->data);
printf("%d\n",p3->data);
return 0;
}