| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 9018 人关注过本帖, 1 人收藏
标题:请哪位大侠帮忙看一下,为什么我的程序老是提示error C2106: '=' : left op ...
只看楼主 加入收藏
xiaodeo
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2010-10-25
结帖率:0
收藏(1)
已结贴  问题点数:20 回复次数:13 
请哪位大侠帮忙看一下,为什么我的程序老是提示error C2106: '=' : left operand must be l-value
麻烦哪位高手帮忙看一下,谢谢了

#include<stdio.h>
#include<string.h>
//#include<math.h>
//#define  uint unsigned int
//#define N 10

int sort(char (*p)[5])
{
    int i;
    char p1[5];

//    p1 = NULL;

    for (i=0; i<3; i++)
    {   
        if (strcmp(*(p+i),*(p+i+1))>0)
        {
            p1 = *(p+i);
            *(p+i) = *(p+i+1);
            *(p+i+i) = p1;
        }
                    
    }
    return 0;
}


int main(void)
{
    int i;
    char a[5][5];
    printf("please input five string\n");
    for (i=0; i<5; i++)
    {
        scanf("%s",a[i]);
    }
   
    sort(a);
   
    for (i=0; i<5; i++)
    {
        printf("%s\n",a[i]);
    }
    return 0;

}





提示
--------------------Configuration: pointerasvar - Win32 Debug--------------------
Compiling...
pointerasvar.c
D:\我的文档\桌面\C语言代码\pointerasvar.c(18) : error C2106: '=' : left operand must be l-value
D:\我的文档\桌面\C语言代码\pointerasvar.c(19) : error C2106: '=' : left operand must be l-value
D:\我的文档\桌面\C语言代码\pointerasvar.c(20) : error C2106: '=' : left operand must be l-value
Error executing cl.exe.

pointerasvar.obj - 3 error(s), 0 warning(s)




[ 本帖最后由 xiaodeo 于 2010-10-25 21:51 编辑 ]
搜索更多相关主题的帖子: operand left 
2010-10-25 17:30
清风拂晓
Rank: 8Rank: 8
来 自:火星
等 级:蝙蝠侠
威 望:1
帖 子:356
专家分:889
注 册:2010-8-13
收藏
得分:6 
*p1 = *p;
*p = *(p+i);
*(p+i) = *p1;
这里*P是地址  交换的应该是内容      因为这是指针数组*P代表的是字符串的头地址

清风拂暮(木)
2010-10-25 17:51
long361800
Rank: 2
等 级:论坛游民
帖 子:33
专家分:37
注 册:2010-8-23
收藏
得分:6 
你这个程序的问题是相当的大啊, 对于字符串,你应该使用 *aa[5]这样的数组指针来的话会很方便,由于时间关系,不给你写代码了,你自己试试吧!!!!
2010-10-25 19:56
xiaodeo
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2010-10-25
收藏
得分:0 
谢了楼上的,利用指针数组来处理我已经会了~
2010-10-25 21:26
xiaodeo
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2010-10-25
收藏
得分:0 
回复 2楼 清风拂晓
我找了一些资料看了一下,发现我的程序就是交换内容的,但是因为是字符串的原因,不能用str1 = str2;这样交换~,这样理解不知道对不对~
2010-10-25 21:31
m21wo
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:4
帖 子:440
专家分:1905
注 册:2010-9-23
收藏
得分:6 
程序代码:
include<string.h>
//#include<math.h>
//#define  uint unsigned int
//#define N 10

int sort(char** p)
{
    int i;
    char *p1=new char[10] ;

//    p1 = NULL;

    for (i=0; i<2; i++)
        for(int j=0;j<2;j++)
    {   
        if (strcmp(p[j],p[j+1])>0)
        {
            strcpy(p1, p[j]);
            strcpy(p[j],p[j+1]);
            strcpy(p[j+1],p1);
        }
                   
    }
        delete p1;
        return 0;
}


int main(void)
{
    int i;
    char** a;
    a=new char*[2];
   
    printf("please input five string\n");
    for (i=0; i<2; i++)
    {
        a[i]=new char[10];
        scanf("%s",&a[i]);
    }
   
    sort(&a[0]);
   
    for (i=0; i<5; i++)
    {
        printf("%s\n",a[i]);
    }
    return 0;

}


[ 本帖最后由 m21wo 于 2010-10-25 21:57 编辑 ]

If You Want Something, Go Get It, Period.
2010-10-25 21:45
xiaodeo
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2010-10-25
收藏
得分:0 
回复 6楼 m21wo
谢谢,我懂了~
2010-10-25 21:57
m21wo
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:4
帖 子:440
专家分:1905
注 册:2010-9-23
收藏
得分:0 
就懂了啊

If You Want Something, Go Get It, Period.
2010-10-25 21:58
xiaodeo
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2010-10-25
收藏
得分:0 
回复 8楼 m21wo
嗯,程序是看得懂了,也看了一些资料,有点理解了~,因为如果函数传递的只是一个地址,要交换字符串,就要用strcpy()或是是指针数组来处理~
2010-10-25 22:09
m21wo
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:4
帖 子:440
专家分:1905
注 册:2010-9-23
收藏
得分:0 
程序代码:
#include<stdio.h>
#include<string.h>
//#include<math.h>
//#define  uint unsigned int
//#define N 10

int sort(char** p)
{
    int i;
    char *p1=new char[10] ;

//    p1 = NULL;

    for (i=0; i<5; i++)
        for(int j=1;j<5;j++)
    {   
        if (strcmp((char*)p[j-1],(char*)p[j])>0)
        {
            strcpy(p1, p[j-1]);
            strcpy(p[j],p[j-1]);
            strcpy(p[j-1],p1);
        }
                   
    }
        delete p1;
        return 0;
}


int main(void)
{
    int i;
    char** a;
    a=new char*[10];
   
    printf("please input five string\n");
    for (i=0; i<5; i++)
    {
        a[i]=new char[10];
        scanf("%s",a[i]);
    }
   
    sort(&a[0]);
   
    for (i=0; i<5; i++)
    {
        printf("%s\n",a[i]);
    }
    return 0;

}





完全正确了

If You Want Something, Go Get It, Period.
2010-10-25 22:59
快速回复:请哪位大侠帮忙看一下,为什么我的程序老是提示error C2106: '=' : le ...
数据加载中...
 
   



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

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