2014-10-23 8 views
0

Я написал этот код, но он говорит, что существует конфликт типа объявления объявления. Мне это хорошо. Может кто-нибудь помочь, пожалуйста?Несоответствие типа в C

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

    int main() 
    { 
    int board[9][9] = { 
      {0,0,5,9,0,2,3,8,7}, 
      {9,4,0,1,0,7,6,0,2}, 
      {2,8,7,5,3,0,4,0,0}, 
      {0,5,2,3,6,0,0,0,1}, 
      {4,0,9,0,5,1,2,6,8}, 
      {1,0,6,0,2,0,0,3,4}, 
      {5,0,8,4,0,0,1,9,6}, 
      {3,9,0,0,1,8,7,2,0}, 
      {0,6,0,2,9,5,8,0,3} 
    }; 
    char* board_output = (display_board(board)); 
    printf ("%s", &board_output); 
    return 0; 
    } 

    char* display_board (int board_input[9][9]) 
    { 
     int i; 
     int j; 
     char* output = ""; 
     for (i=0; i<9; i++) { 
      for (j=0; j<9; j++) { 
        output = strcat(strcat(output, board_input[i][j]), ", "); 
      } 
      output = strcat(output, ", "); 
     } 

     return output; 
    } 

Благодаря

Кабир

+3

Кроме того, ваш внутренний 'strcat' неправильно. –

+0

Вам необходимо добавить прототип функции: I.E. char * display_board (int board_input [9] [9]); Этот прототип должен быть вне любой другой функции и перед main() – user3629249

+0

Если прототип не используется, то C по умолчанию все элементы являются int, включая возвращаемое значение. Вот почему компилятор выдает сообщение об ошибке – user3629249

ответ

4

Вам нужно объявление функции перед вызовом этой функции:

char* display_board (int board_input[9][9]) ; 

Вы также можете попробовать написать в строку буквальным output здесь:

strcat(strcat(output, board_input[i][j]), ", "); //this syntax is not readable 
                //split the calls into 
                //separate lines 

Вместо Оставляем некоторую память для его

char* output = calloc(512 , sizeof(char)) ; 

И strcat() требуется строка не является целым числом, так что это не правильно: strcat(output, board_input[i][j])


Там может быть больше ошибок, сначала исправить их, а затем повторите попытку ,

+0

. Перемещение 'main()' до самого конца также будет работать в этом случае. – SukkoPera

+0

Если вы объявляете 'output' как массив, он должен быть статическим! –

+0

@IngoLeonhardt Исправлено. Я не разбирал код, который далеко. – 2501

1

Прототип функции необходимо перед вызовом в main()

Добавить

char* display_board (int board_input[9][9]); 

только после того, как заголовки

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