GOOGLE ADS

viernes, 22 de abril de 2022

No se puede acceder a la matriz de caracteres (cadena) dentro de una estructura

Gracias de antemano, soy nuevo en la programación en C, así que explicaré mi problema lo mejor que pueda. No puedo acceder a ningún elemento en la matriz de caracteres de una estructura. Obtengo "falla de segmentación", la estructura se implementa como una pila.

 typedef struct Nodo
{
int valor;
char nombre[50];
}Nodo;

void push(Nodo** p, int v, char nom[])/*char aut,char gen,int valo*/
{
Nodo *nuevo = (Nodo*)malloc(sizeof(Nodo));
nuevo->valor=v;
nuevo->nombre[50];
nuevo->sig=*p;
*p=nuevo;
}

void getliner(char* nom[50])
{
printf("Escriba el nombre de la canción\n");
fgets(nom, 50, stdin);
nom[strlen(nom) -1] = '\0';
printf("The user has entered %s\n",nom);
}
void clear(void)
{
while ( getchar()!= '\n' );
}
int main(int argc, char const *argv[])
{
int i = 0;
char nom[50];
Nodo* p = NULL;
printf("Agregar texto\n");
getliner(&nom);
for(int i = 0;nom[i]=='\0';i++)
{
p->nombre[i]=nom[i];
}
printf("%c\n",p->nombre[0]);
{


Solución del problema

En mainti tienes:

Nodo *p = NULL;
...
for (... ) {
p->nombre[i]=nom[i];
}

Así pes NULL, no apunta a nada. Entonces, la falla de segmentación resultante no es sorprendente.

Asigne memoria con malloc, o no use un puntero.

No hay comentarios.:

Publicar un comentario

Flutter: error de rango al acceder a la respuesta JSON

Estoy accediendo a una respuesta JSON con la siguiente estructura. { "fullName": "FirstName LastName", "listings...