2013-03-09 80 views
0
// 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; 
} 

我得到在上述行中提到的錯誤可以任何機構告訴什麼是錯的。空字符串數組和最大長度作爲輸入 存儲輸入流,以陣列並返回它的長度錯誤:需要左值

回答

0

它不能分配值給*(s+i)表達式:如果我使用arrays.getline代碼工作正常。可以理解的是,既然你對它進行了解引用,那麼就把這個值留在那個位置(這是一個常數)。

嘗試使用s[i]代替。

+0

實際上我所做的是正確的。我專注於錯誤的路線。問題出現在「c ='\ n'」應該是c =='\ n'的時候。無論如何,我們都會反對。 – user2150837 2013-03-09 06:44:36

+0

我正要回答我自己的問題,但不能......我沒有聲望:((.... – user2150837 2013-03-09 06:47:17

相關問題