| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 496 人关注过本帖
标题:编译时出现这个错误,好像是左值出现问题了,高手们帮帮忙啊,分不多,见谅 ...
只看楼主 加入收藏
tudou2xigua
Rank: 2
等 级:论坛游民
帖 子:87
专家分:54
注 册:2011-3-20
结帖率:90.32%
收藏
已结贴  问题点数:30 回复次数:9 
编译时出现这个错误,好像是左值出现问题了,高手们帮帮忙啊,分不多,见谅!先谢过!
#include<stdio.h>
#include<string.h>
#include<malloc.h>
#define FORMAT "%d,%s,%c,%d,%d,%d,%f,%f,%f,%f,%f"
#define  LEN sizeof(Student)
struct date
    {
        int year;
        int month;
        int day;
    };
typedef struct
{
    int Num;
    char Name[10];
    char Sex;
    struct date birthday[100];
    float English,DataStructure,CPlusPlus;
    float Sum,Average;
    struct date*next;
}Student;
Student stud[100];
struct date birthday[100];
int count=0;
Student*creat(void)     /*创建链表*/
{
    Student*head,*p1,*p2;
    p1=p2=(Student*)malloc(LEN);    /*开辟一个新单元*/
    scanf(FORMAT,&p1->Num,p1->Name,&p1->Sex,&p1->birthday->year,&p1->birthday->month,&p1->birthday->day,&p1->English,&p1->DataStructure,&p1->CPlusPlus,&p1->Sum,&p1->Average);
    head=NULL;
    while(p1->Num!=0)
    {
        count=count+1;
        if(count==1)
            head=p1;
        else
            p2->next=p1;
        p2=p1;
        p1=(Student*)malloc(LEN);
        scanf(FORMAT,&p1->Num,p1->Name,&p1->Sex,&p1->birthday->year,&p1->birthday->month,&p1->birthday->day,&p1->English,&p1->DataStructure,&p1->CPlusPlus,&p1->Sum,&p1->Average);
    }
    p2->next=NULL;
    return(head);
}
Student*Edit(Student*head,Student*stu)     /*修改学生信息*/
{
    Student*p0,*p1;
    p1=head;
    p0=stu;
    while((p0->Num!=p1->Num)&&(p1->next!=NULL))
        p1=p1->next;
    if(p0->Num==p1->Num)
    {
        p1->Name=p0->Name;
        p1->Sex=p0->Sex;
        p1->birthday->year=p0->birthday->year;
        p1->birthday->month=p0->birthday->month;
        p1->birthday->day=p0->birthday->day;
        p1->English=p0->English;
        p1->DataStructure=p0->DataStructure;
        p1->CPlusPlus=p0->CPlusPlus;
        p1->Sum=p0->Sum;
        p1->Average=p0->Average;
        if(p1->next=NULL)
            p0->next=NULL;
    }
    return(head);
}
void main()
{
    Student stud1;
    printf("请输入要修改的学生学号:");
    scanf("%d",&stud1.Num);
    printf("请输入修改的信息:");
    scanf(FORMAT,&stud1.Num,stud1.Name,&stud1.Sex,&stud1.birthday->year,&stud1.birthday->month,&stud1.birthday->day,&stud1.English,&stud1.DataStructure,&stud1.CPlusPlus,&stud1.Sum,&stud1.Average);
    Edit(stud,&stud1);
}

d:\msdev98\myprojects\x4\x4.c(54) : error C2106: '=' : left operand must be l-value
编译时出现这错误,请问怎么改?
高手们帮帮忙啊
搜索更多相关主题的帖子: English 
2011-06-01 19:26
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:0 
看不懂。

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-06-01 19:49
tudou2xigua
Rank: 2
等 级:论坛游民
帖 子:87
专家分:54
注 册:2011-3-20
收藏
得分:0 
回复 2楼 ansic
修改学生信息:按学号修改学生信息
2011-06-01 20:00
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:30 
strcpy(p1->Name,p0->Name);

字符串赋值要用strcpy

                                         
===========深入<----------------->浅出============
2011-06-01 20:28
yangxin612
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2010-10-3
收藏
得分:0 
p1->Name
应该指向的是地址吧
2011-06-01 20:34
烟雾中的迷茫
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:621
专家分:1069
注 册:2011-2-9
收藏
得分:0 
Student*creat(void)     /*创建链表*/ struct date*next;

此处太挤了吧!建议写开点好吧  后面一样
 scanf("%d",&stud1.Num);
可以这样写吗?后面也一样
2011-06-01 21:05
tudou2xigua
Rank: 2
等 级:论坛游民
帖 子:87
专家分:54
注 册:2011-3-20
收藏
得分:0 
回复 4楼 laoyang103
您是高手,帮我解决了好几个问题了,不介意加个QQ吧...
2011-06-01 22:07
thlgood
Rank: 5Rank: 5
等 级:职业侠客
帖 子:281
专家分:381
注 册:2010-9-24
收藏
得分:0 
这个得动大手术……
我改改看

o(∩∩)Linux & Python 群:187367181
2011-06-02 00:13
thlgood
Rank: 5Rank: 5
等 级:职业侠客
帖 子:281
专家分:381
注 册:2010-9-24
收藏
得分:0 
==========================================
你这个程序我帮你改了下。由于时间紧迫,赶着睡觉,所以写完之后我只是改了下语法错误。没有进行调试。我并不能确定它能不能正常运行。如果不能,你就好好检查下错误吧。
你这个程序有一个很大的问题就是:你既然用了链表,Student stud[100];struct date birthday[100];
这两句就不应该存在。因为链表与数组相比,链表最大的有事就在于它可以按需分配内存。你这两句代码完全扼杀了它的优势。
由于这个代码是我从论坛上直接复制的,然后修改的,贴出来的时候代码排版可能乱了,请见谅。
最后,建议楼主看看《高质量c/c++编程》这本书。

程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define FORMAT "%d,%s,%c,%d,%d,%d,%f,%f,%f,%f,%f"
#define LEN sizeof(Student)

struct date
{
    int year;
    int month;
     int day;
};
struct Student
{
    int Num;
    char Name[10];
    char Sex;
    float English,DataStructure,CPlusPlus;
    float Sum,Average;
    struct date birthday/*[100]*/;
    struct Student *next;
};
typedef struct Student Student;

Student *creat(Student *h)     /*创建链表*/
{
    Student *p1,*p2;
    p1=p2=(Student *)malloc(LEN);    /*开辟一个新单元*/
    scanf(FORMAT,&p1->Num,p1->Name,&p1->Sex,&p1->birthday.year,&p1->birthday.month,&p1->birthday.day,&p1->English,&p1->DataStructure,&p1->CPlusPlus,&p1->Sum,&p1->Average);
    h = NULL;
    while(p1->Num!=0)
    {
        if(h == NULL)
            h = p1;
        else
            p2->next=p1;
        p2=p1;
        p1=(Student*)malloc(LEN);
        scanf(FORMAT,&p1->Num,p1->Name,&p1->Sex,&p1->birthday.year,&p1->birthday.month,&p1->birthday.day,&p1->English,&p1->DataStructure,&p1->CPlusPlus,&p1->Sum,&p1->Average);
    }
    p2->next=NULL;
    return h;
}
//Student *Edit(Student *head,int y)     /*修改学生信息*/
Student *Edit(Student *head, int y)
{
    Student *temp = head;
    while (temp != NULL)
    {
        if(temp->Num == y)
        {
            printf("请输入你要修改的内容:\n");
            scanf(FORMAT,&temp->Num,temp->Name,&temp->Sex,&temp->birthday.year,&temp->birthday.month,&temp->birthday.day,&temp->English,&temp->DataStructure,&temp->CPlusPlus,&temp->Sum,&temp->Average);
            return head;
        }
        else
        {
            temp = temp->next;
        }
    }
    if (temp == NULL)
    {
        printf("该学号码未找到!!\n");
        exit (0);
    }
}
int main()
{
    Student *head;
    int x = 0;
    head = creat(head);
    printf("请输入要修改的学生学号:");
    scanf("%d", x);
    head = Edit(head,x);   
    return 0;
}


[ 本帖最后由 thlgood 于 2011-6-2 00:36 编辑 ]

o(∩∩)Linux & Python 群:187367181
2011-06-02 00:33
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:0 
回复 7楼 tudou2xigua
553069938

                                         
===========深入<----------------->浅出============
2011-06-04 19:35
快速回复:编译时出现这个错误,好像是左值出现问题了,高手们帮帮忙啊,分不多, ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025834 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved