(c语言)利用指向结构的指针先输入数据,后打印数据,为什么会出现打印出来的都是0?

问题描述

(c语言)利用指向结构的指针先输入数据,后打印数据,为什么会出现打印出来的都是0?

#include

#define MAXFIRST 20
#define MAXLAST 20
#define G_STORE 3
#define A_STRORE 3
#define CSIZE 4
struct name {
char first[MAXFIRST];
char last[MAXLAST];

};

struct student{
struct name s_name;
float grade[G_STORE];
float average;

};

void e_function(struct student * ps[],int count);
void f_function(struct student * ps[],int count);
void g_function(struct student * ps[],int count);

int main(void)
{
int index;
int count=0;
struct student solve[CSIZE];
struct student * psolve[CSIZE];
for(index=0;index<CSIZE;index++)
psolve[index]=&solve[index];

printf("Please enter your first name:n");
while(counts_name.first)!=NULL&&psolve[count]->s_name.first[0]!='')
{
printf("Please enter your last name:n");
gets(psolve[count]->s_name.last);
printf("Please enter your Chinese grade,Math grade and English grade:n");
scanf("%.2f %.2f %.2f",&psolve[count]->grade[0],&psolve[count]->grade[1],&psolve[count]->grade[2]);
count++;
while(getchar()!='n')
continue;
printf("Enter next student's first name:n");
}

e_function(psolve,count);
f_function(psolve,count);
g_function(psolve,count);

return 0;

}

void e_function(struct student * ps[],int count)
{

int index;
for(index=0;index<count;index++)
    ps[index]->average=(ps[index]->grade[0]+ps[index]->grade[1]+ps[index]->grade[2])/3;

}

void f_function(struct student * ps[],int count)
{
int index;
for(index=0;index
{
printf("%s %s ",ps[index]->s_name.first,ps[index]->s_name.last);
printf("Chinese grade,Math grade and English grade:%.2f %.2f %.2fn",ps[index]->grade[0],ps[index]->grade[1],ps[index]->grade[2]);

}

}

void g_function(struct student * ps[],int count)
{
int index;
for(index=0;index
printf("average grade:%.2fn",ps[index]->average);
}

解决方案

太长了,没指到正确的变量。或者该变量没赋值

解决方案二:

while(counts_name.first!=NULL&&psolve[count]->s_name.first[0]!='')
这句话你拷错了吧?counts_name没有定义。

解决方案三:

psolve[count]数字在使用前没有初始化。

解决方案四:

最好的办法就是单步调试,比较容易分析原因

时间: 2024-12-31 02:34:58

(c语言)利用指向结构的指针先输入数据,后打印数据,为什么会出现打印出来的都是0?的相关文章

c-C 语言中返回结构体指针,结果出来了,但是还是出现错误,不知道为什么

问题描述 C 语言中返回结构体指针,结果出来了,但是还是出现错误,不知道为什么 解决方案 p 没有初始化,也就是没有分配空间.典型的指针错误,不初始化,指针指向哪里呢? 解决方案二: array *p = new array(); 解决方案三: array p;test(&p); 解决方案四: 当然,使用指针应该首先初始化一个空地址的,否则,很容易发生指针地址错误其次,看了一下你的程序设计,程序本身是定义了一个array的结构体变量,在主函数中却要申请一个指针变量p(它的类型是结构体),一系列操

C语言中的结构体指针在c#中怎么表示

问题描述 大家好,现在需要将C的一部分函数实现转换到c#中来,请问如下该怎么表示啊:#defineBB_MAX_SIZEtypedefstruct{intbuffer[RB_MAX_SIZE];int*buffer_end;int*data_start;int*data_end;intcount;intsize;};back_buffer..intBB_pop(backbuffer*rb){if(rb==NULL||rb->buffer==NULL)returnfalse;int8_tdata=

关于c语言结构体指针数组的问题

问题描述 关于c语言结构体指针数组的问题 我有一个数组,里面每个成员都是结构体指针,我应该怎么给这个数组分配空间? 解决方案 指针变量的长度都是固定的,与你指向什么东西没关系的. 解决方案二: #include #define N 3 struct student { long int num; char name[20]; float score[3]; float aver; }; int main() { void Input(struct student stu[]); struct s

调试-求大神~~ c free()结构体指针出错

问题描述 求大神~~ c free()结构体指针出错 本人菜鸟一枚,调试程序时发现下面的程序只要用free()来释放结构体指针就出错,百思不得其解,望大师指正!非常感谢啦! 注:本人用的是VC6.0.自己写的C程序,私心揣测难道是结构体指针特殊一点,或者我释放的方式不对~ 补充:C-Free 5.0上选择mingw5调试则没有问题!到底哪里有问题? #include <stdio.h> #include <stdlib.h> #include <malloc.h> st

c语言-结构体指针数组指向结构体类型数组的问题

问题描述 结构体指针数组指向结构体类型数组的问题 #include<stdio.h> #include<stdlib.h> struct student { char num; char name[10]; int grade; }; void swap(struct student *p[],int n) { int k,m,i,j; struct student *d; k=0;m=n-1; while(k<m) { j=m-1;m=0; for(i=k;i<=j;

C语言及程序设计进阶例程-15 指向结构体的指针

贺老师教学链接  C语言及程序设计进阶 本课讲解 指向结构体变量的指针的应用 #include <stdio.h> #include <string.h> struct Student { int num; char name[12]; char sex; float score; }; int main( ) { struct Student stu; stu.num=10301; strcpy(stu.name, "Wang Fun"); stu.sex='

C++中指向结构体变量的指针_C 语言

定义: 结构体变量的指针就是该变来那个所占据的内存段的起始地址.可以设一个指针变量,来指向一个结构体变量,此时该指针变量的值是结构体变量的起始地址. 设p是指向结构体变量的数组,则可以通过以下的方式,调用指向的那个结构体中的成员: (1)结构体变量.成员名.如,stu.num. (2)(*p).成员名.如,(*p).num. (3)p->成员名.如,p->num. 复制代码 代码如下: #include<iostream>#include<string>using na

C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com

原文:C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表本文由 arthinking 发表于315 天前 ⁄ itzhai.com原创文章 ⁄ C语言 ⁄ 评论数 3 ⁄ 被围观 1,775 views+   指针数组: 在一个数组中,如果它的元素全部都是指针

C语言 socket 如何发送带指针的结构体?

问题描述 C语言 socket 如何发送带指针的结构体? 发送一个带指针的结构体,我知道怎么发送? 先把结构体转换成字符串,然后发出.但是接收的时候,怎么接收到结构体中?thanks! 解决方案 发送: struct f;char *ffff[sizeof(f)];memcpy(ffff &f sizeof(f)); 接收: struct f; ffff为收到的数据 memcpy(&f ffff sizeof(ffff)); 解决方案二: C语言---结构体指针C语言--结构体中的指针C语