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 main
ti tienes:
Nodo *p = NULL;
...
for (... ) {
p->nombre[i]=nom[i];
}
Así p
es 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