Hola a todos, tengo que preparar un programa que me cuenta los caracteres que introduzco utilizando arreglos y ciclos. Lo que tengo hecho no es mcho, pero voy a explicar lo que trato de hacer
#include <stdio.h>
#include <stdlib.h>
#define tam 1000
int main()
{
int i=0;
char a[tam];
for(i=0 ;i<1000; i++)
a = fgetc(i);
printf("%d", %i);
}
estoy definiendo un array de 1000 caracteres y un contador i que aumente cada vez que agregue uno, y al final recibir el valor de i cuando haga el printf
Explica mejor el ejercicio
Que tiene que hacer exactamente?
A medida que apretás una tecla mostrarla? y también ir mostrando el numero de teclas presionadas?
o simplemente ingresar algo, y al final mostrar cuantos caracteres introdujiste?
lo que debe hacer es lo siguiente:
escribo X cantidad de caracteres, le doy enter y el programa me dice "escribiste X caracteres", depues me tengo que poner mas exquisito y decir cuantas mayusculas hay, pero lo que mas me interesa es la primera parte
gracias :)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 20
int main()
{
char frase[MAX];
int i=0;
int espacio=0;
gets(frase);
for(i=0; i<MAX; i++)
{
if(frase[i] == ' ')
{
espacio++;
}
}
printf("%d caracteres\n",strlen(frase));
printf("%d espacios\n",espacio);
}
espero te sirva, lo hice en code::blocks 10.05, Windows :)
No necesitas un arreglo para esto, podrías hacerlo así:
#include <stdio.h>
int main(void)
{
char c;
unsigned contador = 0;
while((c = getchar()) != EOF)
contador++;
printf("Escribiste : %u\n", contador);
return 0;
}
Saludos.
Supongo que con el EOF funciona, pero yo lo compararía contra '\n'
Se debe comparar contra EOF en caso de error o fin de archivo y contra '\n' para cumplir con el enunciado (debe procesar solo una linea de texto).
Por ultimo se debe cambiar el tipo de la variable "c" en el programa de Leo a "int" ya que ese es el tipo de retorno de la función "getchar":
int c;
unsigned contador = 0;
while((c = getchar()) != EOF && c != '\n')
contador++;
Un saludo
Cierto, y también comparar contra '\n', como en el código de rir3760, ya que creo que daría un caracter de más. Saludos.
int c;
unsigned contador = 0;
while((c = getchar()) != EOF && c != '\n')
if(c != '\n')
contador++;
ahí quedaría, creo yo
Cita de: PiroskY en 7 Julio 2011, 18:16 PM
int c;
unsigned contador = 0;
while((c = getchar()) != EOF && c != '\n')
if(c != '\n')
contador++;
ahí quedaría, creo yo
No tendria efecto ya que el cuerpo del bucle (la sentencia de seleccion) se ejecuta mientras el caracter sea distinto de EOF y '\n'. En otras palabras dentro del cuerpo del bucle "c != '\n'" siempre es verdadero (1 en este caso).
Si se debe contabilizar el caracter '\n' esa condicion se puede colocar a continuacion del bucle:
int c;
unsigned contador = 0;
while ((c = getchar()) != EOF && c != '\n')
contador++;
if (c == '\n')
contador++;
/* ... */
Un saludo
cierto, pero entonces me parece que no contaría uno de mas