错误:需要左值

时间:2013-03-09 06:11:06

标签: lvalue

// getline : empty string array and max length as input
// stores input stream to array and return its length

#include<stdio.h>
#define LENGTH 100
int getline1(char* , int );
int main(){
    char *s;
    int i;
    s=(char*)malloc(LENGTH*sizeof(char));
    i=getline1(s,LENGTH);
    printf("%s %d",s,i);
    return 0;
}

int getline1(char *s, int lim){

    int c ,i;
    i = 0;
    printf("%u",s);
    while(--lim >= 0 && (c=getchar()) != EOF && c = '\n'){
        *(s+i)=c; //error : lvalue required
        i++;
    }
    if(c=='\n'){
        *(s+i)=c;
        i++;
    }
    *(s+i)='\0';
    return i;
}

我得到了上述行中提到的错误,任何机构都可以说错了。如果我使用arrays.getline:空字符串数组和最大长度作为输入,代码工作正常  将输入流存储到数组并返回其长度

1 个答案:

答案 0 :(得分:0)

无法将值分配给*(s+i)表达式。可以理解,因为你取消引用它,将值保留在该位置(这是一个常数)。

请尝试使用s[i]