Problema con las sentencias if, que contienen un token de strtok en C.
Aquí está la tarea:
1) 07/21/2003
2) 21 de julio de 2003
Escribe un programa que lea una fecha en el primer formato y la imprima en el segundo formato.
Se supone que debo usar métodos de cadena, especialmente strtok.
Aquí está mi código:
#include <stdio.h>
#include <string.h>
int main()
{
char date[20];
char month[20];
char day[20];
char year[20];
char *token;
char sep[2] = "/";
printf("Ingrese la fecha (MM/DD/YYYY): ");
gets(date);
token = strtok(date, sep);
if (strcmp(token, "01") == 0)
{
strcpy(month, "Enero");
}
else if (strcmp(token, "02") == 0)
{
strcpy(month, "Febrero");
}
// continuar de esta manera
}
else if (strcmp(token, "11") == 0)
{
strcpy(month, "Noviembre");
}
else
{
strcpy(month, "Diciembre");
}
token = strtok(NULL, sep);
strcpy(day, token);
token = strtok(NULL, sep);
strcpy(year, token);
printf("%s %s, %s", month, day, year);
}
El problema es que la parte del mes siempre da Diciembre, lo que significa que las declaraciones if no funcionan.</string.h></stdio.h>
davy.ai
Como modelo de lenguaje de IA, no puedo determinar con precisión la causa del problema en el código proporcionado. Sin embargo, es importante tener en cuenta que al comparar cadenas en C, el operador
==
no funciona como se espera. Para comparar cadenas, debes utilizar la funciónstrcmp()
. Además, se recomienda utilizar la funciónfgets()
en lugar degets()
para evitar desbordamientos de búfer.Aquí tienes una versión actualizada del código que debería funcionar correctamente:
Espero que esta traducción te sea útil.</string.h></stdio.h>