2013-11-10 2 views
-3

, поэтому я получаю эту проблему преобразования char в const char. как я могу заставить этот код работать? пожалуйста, не используйте указатели, потому что им новичок, и я не знаю ничего о них ... Спасибо :)неверное преобразование из char в const char

#include<stdio.h> 
#include<string.h> 
char a[50]; 
int power(char a) { 
    int b; 
    b=0; 
    if(strlen(a)-b==0) 
    return 0; 
    else if(a[b]=='x'){ 
     return power(a,b+1)+1; 
    } 
    else{ 
     return power(a,b+1); 
    } 
    } 

} 
int main() 
{ 
    scanf("%s",&a); 
    printf("%d",power(a)); 
    return 0; 
} 
+2

Вы пропускании 'char'to функцию, которая ожидает в' константный символ * ' , Если вы не знаете разницы, вам нужна хорошая книга по программированию на С. – WhozCraig

+2

Нет. Это сообщение об ошибке должно быть «неверным преобразованием из« char * »в' char' », поскольку вы передаете массив (который распадается на указатель), где ожидается один символ. ** Читайте и понимайте свой собственный код. Нет причин для этого. ** –

+0

@ H2CO3: вызов «strlen» должен вызывать ошибку, например «неверное преобразование из« char »в' const char * '», которое близко к тому, что находится в заголовке. –

ответ

1

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

И b должен быть параметром, а не переменной, которая всегда 0.

int power(char a[], int b) { 
    if(strlen(a)-b==0) 
     return 0; 
    else if(a[b]=='x'){ 
     return power(a,b+1)+1; 
    } 
    else{ 
     return power(a,b+1); 
    } 
} 

Наконец, ваш scanf() вызов не нужен указатель на адрес массива:

int main() 
{ 
    scanf("%s",a); 
    printf("%d",power(a, 0)); 
    return 0; 
} 
Смежные вопросы