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

asignar un valor a variable Char

Estas en el tema de asignar un valor a variable Char en el foro de C/C++ en Foros del Web. hola estoy recien comenzando con c++ y quisierasaber como asignarle un valor a una variable char si el usuario no le asigna... aqui le muestro ...
  #1 (permalink)  
Antiguo 26/10/2010, 23:12
 
Fecha de Ingreso: octubre-2010
Mensajes: 3
Antigüedad: 14 años
Puntos: 0
Pregunta asignar un valor a variable Char

hola estoy recien comenzando con c++ y quisierasaber como asignarle un valor a una variable char si el usuario no le asigna... aqui le muestro el programa:

un programa que muestre por pantalla los pacientes ingresados y solamente los pacientes con alergias...

#include<stdio.h>
#include<conio.h>
#include<string.h>

struct paciente{
char nombre[50];
char fono[50];
char direccion[100];
char alergias[50];
};

struct paciente (in[100]);
int id=0;
int c=0;

void ingresar( ){
char res1;
char res2;
do{
printf("\nNombre del Paciente: ");
fflush(stdin);
gets(in[id].nombre);
printf("\nTelefono: ");
fflush(stdin);
gets(in[id].fono);
printf("\nDireccion: ");
fflush(stdin);
gets(in[id].direccion);
printf("\nEl Paciente Tiene Alergias? [NO=n, SI=s]:\n");
do{
res1=getche();
getch();
if(res1=='s'){
printf("\nQue Alergias padece: ");
fflush(stdin);
gets(in[id].alergias);
printf("\n");}
else{
if(res1=='n'){
printf("\nEl paciente No tiene Alergias\n");

in[id].alergias == ?? // Como le asigno un valor al este vacio para luego compararlo mas abajo }
else {printf("\nOpcion no valida\n");}}
}while(res1!='s' && res1!='n');
id++;
c++;
do{
printf("\nDesea ingresar otro Paciente [NO=n, SI=s]: ");
res2=getche();
getch();
}while(res2!='s' && res2!='n');
}while(res2!='n');
}

void mostrar(){
clrscr();
printf("\n\t\t\tPACIENTES INGRESADOS\n\n");
gotoxy(3,4);
printf("| Nombre Paciente\n");
gotoxy(21,4);
printf("| Telefono\n");
gotoxy(37,4);
printf("| Direccion\n");
gotoxy(54,4);
printf("|");
for(id=0;id<c;id++)
{
gotoxy(3,5+id);
printf("|%s",in[id].nombre);
gotoxy(21,5+id);
printf("|%s",in[id].fono);
gotoxy(37,5+id);
printf("| %s",in[id].direccion);
gotoxy(54,5+id);
printf("|");
}
getch();
}

void alergias(){
clrscr();
printf("\n\t\t\tPACIENTES CON ALERGIAS\n\n");
gotoxy(3,4);
printf("| Nombre Paciente\n");
gotoxy(21,4);
printf("| Telefono\n");
gotoxy(37,4);
printf("| Direccion\n");
gotoxy(54,4);
printf("| Alergias\n");
gotoxy(68,4);
printf("|");
IF(in[id].alergias != ????)( //aqui tengo el problema ya que no se con que
compararlo si el espacio esta vacio
for(id=0;id<c;id++){
if(in[id].alergias!="0"){
gotoxy(3,5+id);
printf("|%s",in[id].nombre);
gotoxy(21,5+id);
printf("|%s",in[id].fono);
gotoxy(37,5+id);
printf("| %s",in[id].direccion);
gotoxy(54,5+id);
printf("| %s",in[id].alergias);
gotoxy(68,5+id);
printf("|");}
getch();
}

void main(){
int op;
do{
clrscr();
printf("MENU\n");
printf("1.- Ingrese Paciente\n");
printf("2.- Mostrar Pacientes\n");
printf("3.- Mostrar Pacientes con Alergias\n");
printf("4.- Salir\n");
printf("Opcion : ");
scanf("%d",&op);
switch(op){
case 1: clrscr();printf("\t\tIngresar Pacientes\n");ingresar();break;
case 2: mostrar();getch();break;
case 3: alergias();getch();break;
case 4: break;
default: printf("Opcion no valida"); getch();
}
}while(op!=4);
}
  #2 (permalink)  
Antiguo 27/10/2010, 01:23
 
Fecha de Ingreso: septiembre-2010
Ubicación: http://nomenrecordo.blogspot.com/
Mensajes: 111
Antigüedad: 14 años, 1 mes
Puntos: 1
Respuesta: asignar un valor a variable Char

POs haces que in[id].alergias se iguale a "" o sea, nada y te escibirá un campo en blanco.
  #3 (permalink)  
Antiguo 27/10/2010, 01:37
 
Fecha de Ingreso: junio-2010
Ubicación: Madrid
Mensajes: 620
Antigüedad: 14 años, 5 meses
Puntos: 73
Respuesta: asignar un valor a variable Char

Los elementos que has puesto dentro de la estructura no son variables de tipo char, sino arrays de char (es decir, cadenas). En C no existen las cadenas de caracteres como tales, sino que son arrays de caracteres (aunque, por comodidad, se sigan llamando cadenas de caracteres).

Los operadores de asignación (=) y comparación (==, <, >, etc) no puedes utilizarlos con cadenas de caracteres. Utiliza las funciones strcpy y strcmp para copiar y comparar cadenas, busca en cualquier manual de C (incluso puede que lo tengas en la ayuda de tu compilador) cómo se utilizan estas funciones (y otras de su familia). Por ejemplo, para asignar el valor cadena vacía sería:

strcpy(MiCadena, "");

es decir, en MiCadena copio una cadena de 0 caracteres de longitud.
  #4 (permalink)  
Antiguo 27/10/2010, 17:28
 
Fecha de Ingreso: octubre-2010
Mensajes: 3
Antigüedad: 14 años
Puntos: 0
Respuesta: asignar un valor a variable Char

pero me podria explicar bien porque no se como in[id].alergias asignarle un valor "0"
y luego compararlo???
  #5 (permalink)  
Antiguo 28/10/2010, 01:33
 
Fecha de Ingreso: junio-2010
Ubicación: Madrid
Mensajes: 620
Antigüedad: 14 años, 5 meses
Puntos: 73
Respuesta: asignar un valor a variable Char

En principio, tienes dos opciones:

Si haces

strcpy(in[id].alergias, "");

esta cadena tendrá longitud 0. La comparación sería

if (strlen(in[id].alergias) == 0) { ... }

La otra opción sería hacer

strcpy(in[id].alergias, "0");

En este caso, la cadena vale "0" (0 como cadena de caracteres, no como valor numérico). La comparación sería:

if (strcmp(in[id].alergias, "0") == 0) { ... }

La función strcmp devuelve 0 si ambas cadenas son iguales, un valor negativo si la primera es menor y un valor positivo si la primera es mayor.

Vuelvo a repetir, mírate las funciones strcpy, strcmp y similares.

Etiquetas: asignar, char, variables
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 19:43.