2016-12-30 5 views
-1

(最初の10行のための)私の尾のコードは次のとおりです。予期しないアセス違反(テール)

#include <stdio.h> 
#include <stdlib.h> 
#include <ctype.h> 

typedef char storage_datatype; 

#define MAXLINESIZE 1000 
#define STORAGESIZE 10000 
#define MAXLINES 100 

int mgetline(char*, int); 
char* alloc(int n); 
void cp(char*, char*); 

char *lines[MAXLINES]; 

storage_datatype storage[STORAGESIZE]; 
storage_datatype *storagep = storage; 

int main(int argc, char **argv) { 
    int space, i; 
    space = i = 0; 
    char line[MAXLINESIZE]; 
    char* p; 
    while ((space = mgetline(line, MAXLINESIZE)) > 0) { 
     p = alloc(space); 
     cp(p, line); 
     lines[i++] = p; 
    } 
    i = 0; 
    while (i < 10) { 
     if (*lines[i]) { 
      printf("%s", lines[i++]); 
     } 
    } 
    getchar(); 
    return 0; 
} 

int mgetline(char *s, int lim) 
{ 
    int c; 
    char *t = s; 

    while (--lim > 0 && (c = getchar()) != EOF && c != '\n') 
     *s++ = c; 
    if (c == '\n') 
     *s++ = c; 

    *s = '\0'; 

    return s - t; 
} 

char* alloc(int n) { 
    if (storage + STORAGESIZE - storagep >= n) { 
     storagep += n; 
     return storagep - n; 
    } 
    else 
     return 0; 
} 

void cp(char *s, char *t) { 
    while ((*s++ = *t++)); 
} 

私はこのエラーを取得しています:この行の

Access violation reading location 0x0000000000000000.

if (*lines[i]) {

私はなぜ理解できません。誰かが私にこれを説明できることを願っています。 space

mgetline(line, MAXLINESIZE) > 0 

結果( - - 真または偽0 1)を記憶:

+1

'スペース= mgetline(ライン、MAXLINESIZE)> 0':spacemgetlineの結果を格納し、値が0の場合も大きいかどうかを確認する

0、 – BLUEPIXY

+1

'if(* lines [i]){' - '' if(lines [i]){' – BLUEPIXY

+0

@BLUEPIXY最初のコメントは合理的です。しかし、第二のものは意味をなさない? – Siliproksi

答えて

1
while (space = mgetline(line, MAXLINESIZE) > 0)... 

比較を行います。 - > '(スペース= mgetline(

while ((space = mgetline(line, MAXLINESIZE)) > 0)... 
+0

私は括弧で質問を編集しています。私はまだバグがあるので。それをした後でさえ。とにかく+1に値する。 – Siliproksi

+1

@Siliproksi答えを書き換えないように答えを編集しないでください。編集は質問を変更しない情報だけを追加する必要があります。 – Stargateur

+0

はい、これは答えではありません...私は間違った質問を残すべきですか?または私は間違った答えを受け入れるべきですか?私はこれを変更しましたが。私はまだ同じバグを取得します。 – Siliproksi

関連する問題