Las funciones getche y putchar en C
– Prog042
/* Prog042.cpp */
/* La función ‘getche()’ lee un caracter. Espera hasta que se pulsa una tecla y entonces devuelve su valor. El eco de la tecla pulsada aparece automáticamente en la pantalla.
La función ‘putchar()’ imprime un carácter en pantalla. Estas dos funciones están en <conio.h> */
#include <stdio.h>
#include <conio.h>
void main()
{
char c;
printf («Escribe una letra: n»); c=getche();
if (c==’A’) printf(«nHas escrito una ‘A'»); else
printf («nNo has escrito una ‘A'»);
printf («nHas escrito: «); putchar(c);
}
– Prog043
/* Prog043.cpp */
/* Se trata de investigar si el uso de ‘getche’nos sirve para analizar cada una de las letras que escribimos en una frase. */
#include <stdio.h>
#include <conio.h>
void main()
{
char frase[75];
char c;
int i;
printf («nnEscribe una frase máx 74 caracteres «);
printf («y pulsa un ‘.’ para acabarnn»);
for (i=0;i<=74;i++)
{
frase[i]=getche(); if(frase[i]==’.’) break;
}
printf («nnnLa frase que has escrito es: «);
printf («nn»);
for(i=0;i<=74;i++)
{
if (frase[i]==’.’)
break; else
putchar(frase[i]);
};
printf («%c»,frase[i]);
}
– Prog044
/* Prog044.cpp */
/* Al escribir un texto que contiene «algo» entre parentesis me interesa que el programa dé como resultado el texto original pero sin el texto entre paréntesis */
#include <stdio.h>
#include <conio.h>
void main()
{
char frase[75],frasefin[75];
char c;
int i,j;
printf («nnEscribe una frase máx 74 caracteres «);
printf («y pulsa un ‘.’ para acabarnn»);
for (i=0;i<=74;i++)
{
frase[i]=getche();
if(frase[i]==’.’) break;
}
printf («nn»);
/* En los espacios en blanco escribo el carácter ‘ç’ */
for(i=0;i<=74;i++)
if (frase[i]==’ ‘)
{
frase[i]=’ç’;
};
/* Todo lo que hay entre un ‘(‘ y un ‘)’ escribo caracteres en blanco. */
for(i=0;i<=74;i++)
{
if (frase[i]==’.’) break;
if (frase[i]=='(‘)
{
for(j=i;j<=74;j++)
{
if (frase[j] != ‘)’) frase[j]=’ ‘; else
{
frase[j]=’ ‘; break;
};
};
};
};
/* Elimino todos los espacios en blanco */ j=0;
for(i=0;i<=74;i++)
{
if (frase[i] != ‘ ‘)
{
frasefin[j]=frase[i];
j = j+1;
};
};
/* Los caracteres ‘ç’ vuelvo a transformarlos en espacios en blanco */
for(i=0;i<=74;i++)
{
if (frasefin[i]==’ç’) frasefin[i]=’ ‘; };
/* Escribo la cadena resultante. */
printf(«n»);
for(i=0;i<=74;i++)
{
if (frasefin[i]==’.’) break;
else
putchar(frasefin[i]);
};
printf(«%c»,frasefin[i]);
}
– Prog045
/* Prog045.cpp */
/* El programa anterior pero en el caso de paréntesis anidados. Es decir si escribimos un texto entre paréntesis, y en su interior hay otro texto entre paréntesis */
#include <stdio.h>
#include <conio.h>
void main()
{
char frase[75],frasefin[75];
char c;
int i,j;
printf(«nnEscribe una frase máx 74 caracteres «); printf(«y pulsa un ‘.’ para acabarnn»); for(i=0;i<=74;i++)
{
frase[i]=getche(); if(frase[i]==’.’) break;
}
printf(«nn»);
/* En los espacios en blanco escribo el carácter ‘ç’ */
for(i=0;i<=74;i++)
if (frase[i]==’ ‘)
{
frase[i]=’ç’;
};
/* Todo lo que hay entre un ‘(‘ y un ‘)’ escribo caracteres en blanco. */
for(i=0;i<=74;i++)
{
if (frase[i]==’.’) break;
if (frase[i]=='(‘)
{
for(j=i;j<=74;j++)
{
if (frase[j] != ‘)’) frase[j]=’ ‘; else
{
frase[j]=’ ‘; break;
};
};
};
};
/* Todo lo que hay entre un ‘ ‘ y un ‘)’ escribo caracteres en blanco. */
for(i=0;i<=74;i++)
{
if (frase[i]==’.’) break; if (frase[i]==’)’)
{
for(j=i;j>=0;j=j-1)
{
if (frase[j] != ‘ ‘) frase[j]=’ ‘; else
{
break;
};
};
};
};
/* Elimino todos los espacios en blanco
*/ j=0;
for(i=0;i<=74;i++)
{
if (frase[i] != ‘ ‘)
{
frasefin[j]=frase[i];
j=j+1;
};
};
/* Los caracteres ‘ç’ vuelvo a transformarlos en espacios en blanco
*/ for(i=0;i<=74;i++)
{
if (frasefin[i]==’ç’) frasefin[i]=’ ‘; };
/* Escribo la cadena resultante.
*/ printf(«n»);
for(i=0;i<=74;i++)
{
if (frasefin[i]==’.’) break;
else
putchar(frasefin[i]);
};
printf(«%c»,frasefin[i]);
}
– Prog046
/* Prog046.cpp */
/********************************************************
Programa que analiza un texto terminado en un punto y contabiliza los siguientes aspectos:
número de caracteres.
número de vocales
número de ‘a’ o ‘A’
número de ‘e’ o ‘E’
número de ‘i’ o ‘I’
número de ‘o’ o ‘O’
número de ‘u’ o ‘U’
********************************************************/
#include <stdio.h>
#include <conio.h>
#include <ctype.h>
void main()
{
char c;
int n,v,a,e,i,o,u;
printf(«nEscribe un texto, y acaba con un puntonn»); c=’ ‘;n=0;v=0;a=0;e=0;i=0;o=0;u=0;
while(c != ‘.’)
{
c=toupper(getche());
if (c==’A’)
{
v = v+1;
a = a+1;
}
if (c==’E’)
{
v=v+1;
e=e+1;
}
if (c==’I’)
{
v=v+1;
i=i+1;
}
if (c==’O’)
{
v=v+1;
o=o+1;
}
if (c==’U’)
{
v=v+1;
u=u+1;
}
n=n+1;
}
printf(«n Caracteres = %d Vocales = %d»,n,v);
printf(«nA = %d E = %d I = %d O = %d U = %d «,a,e,i,o,u);
}
Fuente: Programación en C/C++ (Manual FV) de Fermí Vilà