2015-09-03 4 views
-2

так им пытаются выяснить, как изменить массив на константу, но я постоянно получаю эту ошибкупреобразование массива символов константы полукокса (с)

warning: incompatible pointer types passing 
'char *[3]' to parameter of type 'char *' [-Wincompatible-pointer-types] 
    strcpy(input, inputcon); 
      ^~~~~` 

вот мой код

int main(void) { 

    char *input[3]; 
    int yn = 0; 
    char *no = "no"; 
    char *inputcon = NULL; 
    do { 
     printf("This is the game.\nDo you want to play again?\nType y/n: "); 
     scanf("%s",*input); 
     strcpy(input, inputcon); 
     yn = strcmp(inputcon, no); 
    } while (yn == 1); 
} 
+0

'array'' 'константа' ?? – Haris

+1

Вы даже читали man-страницы функции, которую вы использовали? –

+0

Перед тем, как перейти к обработке строк, вам нужно прочитать информацию о массивах и указателях. – Lundin

ответ

2

Прежде всего,

char *input[3]; 

определяет массив указателей char, который вы не ва nt здесь. Простой массив char выполнит эту работу. Измените его на

char input[4] = {0}; //assuming you want yes to be stored, 
         // reserve space for terminating null 

Во-вторых,

scanf("%s",*input); 

должен быть

scanf("%3s",input); //limit the input as per the buffer length 

В-третьих,

strcpy(input, inputcon); 

совершенно не нужна, удалите ее.

Затем вам нужно заменить

yn = strcmp(inputcon, no); 

с

yn = strcmp(input, no); 

Что сказал, вы должны изменить быстрое попросить пользователя ввести да или нет.

+0

все еще выходит, что бы я ни печатал. –