2012-06-15 20 views

Respuesta

19

Como no puede inicializar así, necesita una expresión constante como valor de inicialización. Reemplazarlo con:

int main (void) { 
    char testStr[50] = "Hello, world!"; 
    char revS[50]; strcpy (revS, testStr); 
    : 
} 

O, si realmente desea inicialización, se puede usar algo como:

#define HWSTR "Hello, world!" 
int main (void) { 
    char testStr[50] = HWSTR; 
    char revS[50] = HWSTR; 
    : 
} 

Esto proporciona una expresión constante con la duplicación mínima en su fuente.

2

Un inicializador para char[] debe ser una cadena literal o algo así como {1,2,3,4}. No está permitido ser el nombre de otra variable.

7

Las matrices no se pueden asignar.

que puedes usar memcpy para copiar el contenido de testStr a revS

memcpy(revS,testStr,50); 
4

expresiones constantes Sólo se puede utilizar para inicializar matrices, como en su inicialización de testStr.

Está tratando de inicializar revS con otra variable de matriz, que es no una expresión constante. Si desea copiar el contenido de la primera cadena en el segundo, deberá usar strcpy.

1

Usted está haciendo

char revS[50] = testStr; 

que está mal ya que no se puede asignar a char *char.

Probar revS = testStr; debería funcionar.

0

A menos que piense en la manipulación de la segunda matriz también puede utilizar un puntero:

int main(void){ 
    char textStr[50] = "hello worlds!"; 
    char *revS = textStr; 
    printf("%s\n", revS); 

}

Si usted quiere conseguir realmente loco puede apuntar a una ubicación específica en la matriz con el operador de referencia:

int main(void){ 
    char textStr[50] = "hello worlds!"; 
    char *revS = &textStr[5]; 
    printf("%s\n", revS); 
} 
Cuestiones relacionadas