¿Cómo corregir este error de segmentación en un progtwig de inversión de secuencia?

Estoy practicando el lenguaje C y simplemente construí un progtwig simple que invierte la secuencia de alfabetos en una palabra.

#include  int main(void) { char str[50]; printf("Enter a word: "); scanf("%s", str); int i, len=0; char temp; while(str[len]!='\0') { len++; } /* for(i=0; i<len/2; i++) { temp=str[i]; str[i]=str[(len-i)-1]; str[(len-i)-1]=temp; } */ while(i!=len-1) { temp=str[i]; str[i]=str[len-1]; str[len-1]=temp; i++; len--; } printf("%s\n", str); return 0; } 

Tengo dos versiones y una está funcionando muy bien, pero la otra hace “Error de segmentación: 11” Supongo que podría haber accedido a la posición de memoria incorrecta, pero es bastante difícil averiguar qué he hecho mal.

Necesitas inicializar i en 0 :

 int i = 0; 

para que comience desde el principio de su cadena. En este momento, i un valor indefinido y accede a la memoria fuera de los límites de su cadena.

También necesitas cambiar tu condición de:

 while (i != len-1) 

a :

 while (i <= len-1) 

para que te detengas cuando llegues al final de tu cadena.