Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Asignar un strig a una variable he imprimir

Estas en el tema de Asignar un strig a una variable he imprimir en el foro de C/C++ en Foros del Web. Muy buenas, Estoy intentando asignar mediante un scanf una palabra a una variable y luego imprimirla que estoy haciendo mal? Este es mi programamilla. void ...
  #1 (permalink)  
Antiguo 17/02/2013, 10:14
 
Fecha de Ingreso: noviembre-2012
Mensajes: 136
Antigüedad: 11 años, 5 meses
Puntos: 0
Asignar un strig a una variable he imprimir

Muy buenas,

Estoy intentando asignar mediante un scanf una palabra a una variable y luego imprimirla que estoy haciendo mal? Este es mi programamilla.

void afegirDNS(char dominio)
{
NodeDNS *Aux;
Aux=(NodeDNS *)malloc(sizeof(NodeDNS));

strcpy(Aux->nombre,dominio);
Aux->DNSseguent=NULL;

if(PrimerNode==NULL)
{
PrimerNode=Aux;
UltimNode=Aux;
}
else
{
UltimNode->DNSseguent=Aux;
UltimNode=Aux;

}

}


char dominio[20];
switch(opcion)
{

case 1: printf("Introdueix el nom de domini: ");
scanf("%s",dominio);
afegirDNS(dominio[20]);
break;
}

Y la funcion para printar es esta

void printarprimer()
{

if (PrimerNode!=NULL)
{
printf("El primer node es: %s\n\n",PrimerNode->nombre);
}
else
{
printf("Llista buida");

}

}
En otro archivo tengo la declaracion de la eststructura que uso
typedef struct
{
char nombre[20];
struct NodeDNS *DNSseguent;

}NodeDNS;

NodeDNS *PrimerNode;
NodeDNS *UltimNode;

Es una lista encadenada, el prablema que tengo es que no se como asignar dominios a una variable de rollo dominio=www.google.es y luego que me lo imprima tal cual, he usado la funcion strcpy() porque no se como hacerlo, de todas formas no me funciona.

Saludos
  #2 (permalink)  
Antiguo 17/02/2013, 10:36
 
Fecha de Ingreso: noviembre-2012
Mensajes: 136
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: Asignar un strig a una variable he imprimir

Ya esta lo he solucionado, siempre me confunco con poner [] en las variables.

He modificado afegirDNS(dominio[20]); por esto afegirDNS(dominio, y esto void afegirDNS(char dominio) por esto void afegirDNS(char dominio[20]).

Siempre me confundo con el tema de los corchetes, que diferencias hay entre poner corchetes con la longitud , no ponerlos o ponerlos vacios?

Por ejemeplo si quiero llamar una funcion y pasar por parametro un string entero, como se tendria que hacer?

llamada:
Funcion(string)

cabecera de la funcion

1- void funcion (char string []) o
2- void funcion (char string [10]) o
3- void funcion (char string )

Que diferencia hay en cada caso?
  #3 (permalink)  
Antiguo 17/02/2013, 14:43
 
Fecha de Ingreso: enero-2012
Ubicación: Buenos Aires
Mensajes: 745
Antigüedad: 12 años, 3 meses
Puntos: 35
Respuesta: Asignar un strig a una variable he imprimir

La diferencia es que si pasas como parámetro a una función un número entre corchetes, le estás pasando el caracter de la cadena que hay en esa posición. Recuerda que un string es un array de caracteres.

Al menos en C, cuando creas una función que tomará como parámetro una cadena, debes especificar el tamaño de la misma.

  #4 (permalink)  
Antiguo 18/02/2013, 08:06
 
Fecha de Ingreso: julio-2012
Mensajes: 375
Antigüedad: 11 años, 9 meses
Puntos: 28
Respuesta: Asignar un strig a una variable he imprimir

Cita:
Iniciado por carbon Ver Mensaje
Al menos en C, cuando creas una función que tomará como parámetro una cadena, debes especificar el tamaño de la misma.
Eso no es cierto. De hecho las funciones string de la librería estándar no te piden el tamaño de la cadena.

En realidad lo de poner [] es una conveniencia sintáctica, realmente lo que se está pasando es un puntero al primer elemento de la cadena. Por lo que no hay diferencia entre poner:

Código:
void Leer(char* Cosa); // Puntero a cadena
void Leer(char Cosa[]); // El compilador lo transforma a un puntero
void Leer(char Cosa[10]); /* El compilador lo transformara a un puntero, a efectos prácticos no hay diferencia. El 10 es solo una anotación para tí mismo*/

Etiquetas: funcion, int, programa, variable
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:53.