Principiante en c
Hola,tengo este programilla y al escribir el mes no me deja,el problema es q cuando leo el mes me lo coge bien pero luego no se que pasa que me cambia el valor.espero ayuda rapida,gracias.
#include <stdio.h>
#include <conio.h>
void main()
{
enum dia{L,M,X,J,V,S,D} dia_comienzo,i;
char mes[9];
unsigned short num_dias,numero_dia=1;
printf("Introduce un mes(Ej. Febrero): ");
scanf("%s",mes);
printf("Introduce el numero de dias del mes: ");
scanf("%u",&num_dias);
printf("Introduce el dia de la semana en que comienza el mes(Ej. J): ");
scanf("%u",&dia_comienzo);
printf("\n\n\n\t%s\n\n",mes);
printf("\tL\tM\tX\tJ\tV\tS\tD\n");
for (i=L;i<dia_comienzo;i++){
printf("\t");
}
while (numero_dia<=num_dias){
printf("\t%u",numero_dia);
numero_dia++;
if (i==D){
i=L;
printf("\n");
}
else
i++;
}
getch();
}
#include <stdio.h>
#include <conio.h>
void main()
{
enum dia{L,M,X,J,V,S,D} dia_comienzo,i;
char mes[9];
unsigned short num_dias,numero_dia=1;
printf("Introduce un mes(Ej. Febrero): ");
scanf("%s",mes);
printf("Introduce el numero de dias del mes: ");
scanf("%u",&num_dias);
printf("Introduce el dia de la semana en que comienza el mes(Ej. J): ");
scanf("%u",&dia_comienzo);
printf("\n\n\n\t%s\n\n",mes);
printf("\tL\tM\tX\tJ\tV\tS\tD\n");
for (i=L;i<dia_comienzo;i++){
printf("\t");
}
while (numero_dia<=num_dias){
printf("\t%u",numero_dia);
numero_dia++;
if (i==D){
i=L;
printf("\n");
}
else
i++;
}
getch();
}
La cadena "mes" la has declarado con tamaño 9. Debes tener en cuenta que por ejemplo "Diciembre" tiene 9 letras, así que al añadirse el caracter de fin de cadena ' ' el array se te queda pequeño. Debes declararlo como mínimo de tamaño 10:
char mes[10];
Más información en la sección Programación en C/C++ de www.maacera.com
char mes[10];
Más información en la sección Programación en C/C++ de www.maacera.com
Mira lo cheké y le kité todos los errores pero la verdad no le entendi k es lo k hace mucho k digamos pero nadie como el dueño para saber k ondas aki te lo pongo sin errores vale?
#include <stdio.h>
#include <conio.h>
void main()
{
enum dia{L,M,X,J,V,S,D} dia_comienzo,i;
char mes[9];
unsigned short num_dias,numero_dia=1;
printf("Introduce un mes(Ej. Febrero): ");
scanf("%s",mes);
printf("Introduce el numero de dias del mes: ");
scanf("%u",&num_dias);
printf("Introduce el dia de la semana en que comienza el mes(Ej. J): ");
scanf("%u",&dia_comienzo);
printf("\n\n\n\t%s\n\n",mes);
printf("\tL\tM\tX\tJ\tV\tS\tD\n");
for (i=L;i<dia_comienzo;i++){
printf("t");
}
while (numero_dia<=num_dias){
printf("\t%u",numero_dia);
numero_dia++;
if (i==D){
i=L;
printf("n");
}
else
i++;
}
getch();
}
#include <stdio.h>
#include <conio.h>
void main()
{
enum dia{L,M,X,J,V,S,D} dia_comienzo,i;
char mes[9];
unsigned short num_dias,numero_dia=1;
printf("Introduce un mes(Ej. Febrero): ");
scanf("%s",mes);
printf("Introduce el numero de dias del mes: ");
scanf("%u",&num_dias);
printf("Introduce el dia de la semana en que comienza el mes(Ej. J): ");
scanf("%u",&dia_comienzo);
printf("\n\n\n\t%s\n\n",mes);
printf("\tL\tM\tX\tJ\tV\tS\tD\n");
for (i=L;i<dia_comienzo;i++){
printf("t");
}
while (numero_dia<=num_dias){
printf("\t%u",numero_dia);
numero_dia++;
if (i==D){
i=L;
printf("n");
}
else
i++;
}
getch();
}
Por favor, no sigais definiendo el array "mes" de tamaño 9.
Es posible que el usuario escriba como nombre de mes "Diciembre" (que tiene 9 letras) o "Noviembre" (que tiene 9 letras) o "Septiembre" (que tiene 10 letras).
Las cadenas almacenan un caracter más, el de fin de cadena. Debemos dejar un espacio para éste, así que la cadena "mes" debe definirse como un array de tamaño 11 (ya que Septiembre tiene 10 letras). Así, ya corrijo mi anterior errata en la que decía que mes debía ser de tamaño 10. NO, debe ser de tamaño 11, por Septiembre.
Os recomiendo que repaseis el tema de arrays y cadenas.
Un saludo, Miguel Angel.
[email protected]
www.maacera.com
Es posible que el usuario escriba como nombre de mes "Diciembre" (que tiene 9 letras) o "Noviembre" (que tiene 9 letras) o "Septiembre" (que tiene 10 letras).
Las cadenas almacenan un caracter más, el de fin de cadena. Debemos dejar un espacio para éste, así que la cadena "mes" debe definirse como un array de tamaño 11 (ya que Septiembre tiene 10 letras). Así, ya corrijo mi anterior errata en la que decía que mes debía ser de tamaño 10. NO, debe ser de tamaño 11, por Septiembre.
Os recomiendo que repaseis el tema de arrays y cadenas.
Un saludo, Miguel Angel.
[email protected]
www.maacera.com
La cadena "mes" debe tener un tamaño mínimo de 10 !!! :
char mes[10];
Si no, puedes tener problemas y en cualquier caso se interpretaría que desconoces cómo funcionan las cadenas en C/C++.
Más información en la sección Programación en C/C++ de www.maacera.com
Dispones de tutor on-line por correo electrónico y por Skype, que te permite realizar llamadas telefónica gratis mediante voz sobre IP.
Date una vuelta por www.maacera.com y compruébalo.
Un saludo.
char mes[10];
Si no, puedes tener problemas y en cualquier caso se interpretaría que desconoces cómo funcionan las cadenas en C/C++.
Más información en la sección Programación en C/C++ de www.maacera.com
Dispones de tutor on-line por correo electrónico y por Skype, que te permite realizar llamadas telefónica gratis mediante voz sobre IP.
Date una vuelta por www.maacera.com y compruébalo.
Un saludo.
En mi opinión yo creo que lo que tienes mal es todos los print y los scanf. Estas usando mal las secuencias de escape
Tanto en un printf como en un scanf lo primero que tienes que poner son las comillas.
La forma de escribir esto:
printf("Introduce un mes(Ej. Febrero): ");
seria:
printf("Introduce un mes (Ej.Febrero): ");
Al no ser que quieras que aparezcan las comillas, entonces seria:
printf(""Introduce un mes (Ej.Febrero):"");
Tanto en un printf como en un scanf lo primero que tienes que poner son las comillas.
La forma de escribir esto:
printf("Introduce un mes(Ej. Febrero): ");
seria:
printf("Introduce un mes (Ej.Febrero): ");
Al no ser que quieras que aparezcan las comillas, entonces seria:
printf(""Introduce un mes (Ej.Febrero):"");
