Utilizando solo C o C++ no es posible. La única solución es utilizar una biblioteca de terceros (como en tu ejemplo) o bien el API del sistema operativo (Mas información en MSDN: Consoles).
Un saludo
Un saludo
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
Mostrar Mensajes Menúchar * datos="";
Cita de: foreground en 30 Septiembre 2012, 21:25 PMNo me ha dado ningún error al compilarlo pero me imagino que estaré haciendo una burrada así que espero que me ayuden.Los errores son dos y se encuentran en el bloque "else" del condicional, estos son la falta del operador '&' en la llamada a "fscanf" y el uso del operador de asignación '=' cuando debería ser el de comparación "==". Esa parte con las correcciones:
}else {
while (fscanf(f, "%c", &c) != EOF)
if ((c == 'z') || (c == 'Z'))
x++;
}
int c;
/* ... */
while ((c = getc(fichero)) != EOF)
if (c == letra || c == LETRA)
nletra++;
Cita de: leosansan en 30 Septiembre 2012, 16:32 PMcPor qué no pruebas a correr el código que expuse?.Porque eso es lo peor que se puede hacer en este escenario. C no es un lenguaje con "rueditas" y debido a sus reglas "tasajear" código para en base al resultado sacar conclusiones no es una buena idea. Lo explico mas adelante.
Cita de: leosansan en 30 Septiembre 2012, 16:32 PM¿No será que "quieres decir otra cosa?No, estas leyendo de mas en mis mensajes.
Cita de: leosansan en 30 Septiembre 2012, 16:32 PMporque decir que no "funciona" cuando sí funciona es erróneo.Cuando se trata del lenguaje C y sus estándares hay que ser muy cuidadoso con el lenguaje (con el otro, me refiero al español).
Citar6.5.2.2 Function callsEn base a esa parte podemos concluir que, si se llama a la función "srand" sin argumentos cuando su prototipo (cortesía de <stdlib.h>) indica que se debe pasar uno, se genera comportamiento no definido.
[...]
2 If the expression that denotes the called function has a type that includes a prototype, the number of arguments shall agree with the number of parameters.
[...]
6 If the expression that denotes the called function has a type that does not include a prototype, the integer promotions are performed on each argument, and arguments that have type float are promoted to double. These are called the default argument promotions. If the number of arguments does not equal the number of parameters, the behavior is undefined.
Cita de: leosansan en 30 Septiembre 2012, 16:32 PMEspero ahora se entienda mejor: utilizar "srand()" es un error ya que no se puede garantizar el comportamiento del programa a partir de ese punto.
Pero te recuerdo que la duda era otra, ésta en concreto:
Respuesta a:CitarEDITO 2: Me surge otra pregunta, utilizar srand() sin semilla y srand() pero con una semilla que no cambie, es realmente lo mismo no?SI, puedes ponerla sin semilla así "srand()" o con semilla, así "srand(15)" y en ambos casos se genera el mismo juego de números aleatorios.
3.141590 3490
The above line contains 13 characters.
Cita de: Caster en 30 Septiembre 2012, 14:28 PMMe surge otra pregunta, utilizar srand() sin semilla y srand() pero con una semilla que no cambie, es realmente lo mismo no?No.
Cita de: leosansan en 29 Septiembre 2012, 22:44 PMLo que expuse en el anterior post es que ese formato no es "aconsejable" ya que depende del compilador que cada uno use.Honestamente no se donde leíste eso. No recuerdo un documento donde se desaconseje su uso, lo cual es entendible ya que el especificador "%n" es parte del estándar de C desde 1989.
Cita de: leosansan en 29 Septiembre 2012, 22:44 PMYa comente que en Code::Blocks no funciona, pero tampoco en Dev-C++, etc, sin embargo en el tal vez menos conocido Pelles C sí da las salidas esperadas.Acabo de compilar el programa:
#include <stdio.h>
int main(void)
{
int numChars;
float a = 3.14159;
int b = 3490;
printf("%f %d%n\n", a, b, &numChars);
printf("The above line contains %d characters.\n", numChars);
return 0;
}
3.141590 3490
The above line contains 13 characters.
Cita de: leosansan en 28 Septiembre 2012, 18:06 PMComo ves, si no es con array llegamos a punteros.Tres comentarios en relación al programa:
Más o menos, algo así:#include <stdio.h>
/* ... */
nombre = (char *)malloc (80*sizeof(char));