2014-09-10 3 views
0

я получаю эту ошибку:компиляции ошибка «уступка от несовместимого типа указателя»

$ gcc -Wall -g translate.c support.c scanner.c -o translate 
support.c: In function ‘readTokens’: 
support.c:66:18: warning: assignment from incompatible pointer type [enabled by default] 
    a[count] = token; 
      ^

здесь является readTokens():

void 
readTokens(char *fileName, char** a[]) 
{ 
FILE *fp; 
char *token; 
int count = 0; 

fp = fopen(fileName, "r"); 
if (fp == 0) 
    { 
    fprintf(stderr,"file %s could not be opened for reading\n", fileName); 
    exit(1); 
    } 

token = readLine(fp); 
while(!feof(fp)) 
    { 
    a[count] = token; 
    ++count; 
    free(token); 
    token = readLine(fp); 
    } 

fclose(fp); 
} 

я задал вопрос, похожее на это раньше, и думал, что я мог бы выяснить это из ответов, но это все еще дает мне неприятности.

+1

Тип 'токен' - это символ 'char *', тип 'a []' is 'char **', поэтому типы их несовместимы. Мое предположение - тип [] может быть «char *». –

+0

его не a [] представляет собой массив строк, созданных в функции до этого, и im пытается прочитать маркеры и передавать их в массив через функцию while. –

+0

работает, если я пишу [count] = (char **) маркер; но когда я читаю массив на экране, чтобы проверить его только последний элемент в файле, повторенный пучок –

ответ

0

Если

a[] is an array of strings

затем

readTokens(char *fileName, char** a[]) 

, безусловно, неправильно и Fumu 7 в тип [] может быть 'символ *' является правильным, я думаю . е. это должно быть

readTokens(char *fileName, char *a[]) 

- cp. вызов функции readTokens().

Смежные вопросы